

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 EMR Serverless 使用自訂映像
<a name="using-custom-images"></a>

**Topics**
+ [使用自訂 Python 版本](#image-python)
+ [使用自訂 Java 版本](#image-java)
+ [建置資料科學映像](#image-data-science)
+ [使用 Apache Sedona 處理地理空間資料](#image-sedona)
+ [使用自訂映像的授權資訊](concepts-licensing-images.md)

## 使用自訂 Python 版本
<a name="image-python"></a>

您可以建置自訂映像，以使用不同版本的 Python。例如，若要將 Python 3.10 版用於 Spark 任務，請執行下列命令：

```
FROM public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest

USER root

# install python 3
RUN yum install -y gcc openssl-devel bzip2-devel libffi-devel tar gzip wget make
RUN wget https://www.python.org/ftp/python/3.10.0/Python-3.10.0.tgz && \
tar xzf Python-3.10.0.tgz && cd Python-3.10.0 && \
./configure --enable-optimizations && \
make altinstall

# EMRS runs the image as hadoop
USER hadoop:hadoop
```

提交 Spark 任務之前，請將 屬性設定為使用 Python 虛擬環境，如下所示。

```
--conf spark.emr-serverless.driverEnv.PYSPARK_DRIVER_PYTHON=/usr/local/bin/python3.10
--conf spark.emr-serverless.driverEnv.PYSPARK_PYTHON=/usr/local/bin/python3.10
--conf spark.executorEnv.PYSPARK_PYTHON=/usr/local/bin/python3.10
```

## 使用自訂 Java 版本
<a name="image-java"></a>

下列範例示範如何建置自訂映像，以針對 Spark 任務使用 Java 11。

```
FROM public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest

USER root

# install JDK 11
RUN amazon-linux-extras install java-openjdk11

# EMRS runs the image as hadoop
USER hadoop:hadoop
```

提交 Spark 任務之前，請將 Spark 屬性設定為使用 Java 11，如下所示。

```
--conf spark.executorEnv.JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.0.8-1.amzn2.0.1.x86_64 
--conf spark.emr-serverless.driverEnv.JAVA_HOME=/usr/lib/jvm/java-11-openjdk-11.0.16.0.8-
```

## 建置資料科學映像
<a name="image-data-science"></a>

下列範例示範如何包含常見的資料科學 Python 套件，例如 Pandas 和 NumPy。

```
FROM public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest

USER root

# python packages
RUN pip3 install boto3 pandas numpy
RUN pip3 install -U scikit-learn==0.23.2 scipy 
RUN pip3 install sk-dist
RUN pip3 install xgboost

# EMR Serverless runs the image as hadoop
USER hadoop:hadoop
```

## 使用 Apache Sedona 處理地理空間資料
<a name="image-sedona"></a>

下列範例示範如何建置映像，以包含用於地理空間處理的 Apache Sedona。

```
FROM public.ecr.aws/emr-serverless/spark/emr-6.9.0:latest

USER root

RUN yum install -y wget
RUN wget https://repo1.maven.org/maven2/org/apache/sedona/sedona-core-3.0_2.12/1.3.0-incubating/sedona-core-3.0_2.12-1.3.0-incubating.jar -P /usr/lib/spark/jars/
RUN pip3 install apache-sedona

# EMRS runs the image as hadoop
USER hadoop:hadoop
```