rab*_*ens 5 amazon-emr apache-spark livy
我使用 Spark 和 Livy 在 AWS 上创建了一个 EMR 集群。我提交了一个带有一些附加库(例如自定义格式的数据源)的自定义 JAR 作为自定义 JAR 步骤。但是,当我尝试从 Livy 访问自定义 JAR 中的内容时,它不可用。
我需要做什么才能使自定义内容在环境中可用?
我将其发布为能够接受它的答案 - 感谢 Yuval Itzchakov 的评论和有关自定义引导操作的 AWS 文档,我找到了答案。
所以这就是我所做的:
sbt assembly所需所有内容而创建的胖 jar)放入 S3 存储桶中创建了一个名为的脚本copylib.sh,其中包含以下内容:
#!/bin/bash
mkdir -p /home/hadoop/mylib
aws s3 cp s3://mybucket/mylib.jar /home/hadoop/mylib
Run Code Online (Sandbox Code Playgroud)创建以下配置 JSON 并将其放入除mylib.jar和之外的同一存储桶中copylib.sh:
[{
"configurations": [{
"classification": "export",
"properties": {
"PYSPARK_PYTHON": "/usr/bin/python3"
}
}],
"classification": "spark-env",
"properties": {}
}, {
"configurations": [{
"classification": "export",
"properties": {
"PYSPARK_PYTHON": "/usr/bin/python3"
}
}],
"classification": "yarn-env",
"properties": {}
},
{
"Classification": "spark-defaults",
"Properties": {
"spark.executor.extraClassPath": "/usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/goodies/lib/emr-spark-goodies.jar:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client.jar:/usr/share/java/Hive-JSON-Serde/hive-openx-serde.jar:/usr/share/aws/sagemaker-spark-sdk/lib/sagemaker-spark-sdk.jar:/usr/share/aws/emr/s3select/lib/emr-s3-select-spark-connector.jar:/home/hadoop/mylib/mylib.jar",
"spark.driver.extraClassPath": "/usr/lib/hadoop-lzo/lib/*:/usr/lib/hadoop/hadoop-aws.jar:/usr/share/aws/aws-java-sdk/*:/usr/share/aws/emr/emrfs/conf:/usr/share/aws/emr/emrfs/lib/*:/usr/share/aws/emr/emrfs/auxlib/*:/usr/share/aws/emr/goodies/lib/emr-spark-goodies.jar:/usr/share/aws/emr/security/conf:/usr/share/aws/emr/security/lib/*:/usr/share/aws/hmclient/lib/aws-glue-datacatalog-spark-client.jar:/usr/share/java/Hive-JSON-Serde/hive-openx-serde.jar:/usr/share/aws/sagemaker-spark-sdk/lib/sagemaker-spark-sdk.jar:/usr/share/aws/emr/s3select/lib/emr-s3-select-spark-connector.jar:/home/hadoop/mylib/mylib.jar"
}
}
]
Run Code Online (Sandbox Code Playgroud)
spark-envPySpark 需要和 的分类yarn-env才能通过 Livy 在 EMR 上与 Python3 配合使用。还有另一个问题:EMR 已经在这两个extraClassPath库中填充了 EMR 正常运行所需的许多库,因此我必须在没有库的情况下运行集群,从中提取这些设置spark-defaults.conf并随后调整我的分类。否则,S3 访问之类的功能将无法工作。
创建集群时,在步骤 1 中,我在 中引用了上面的配置 JSON 文件Edit software settings,在步骤 3 中,我配置copylib.sh为自定义引导操作。
我现在可以打开集群的 Jupyterhub,启动笔记本并使用我添加的功能。
| 归档时间: |
|
| 查看次数: |
4732 次 |
| 最近记录: |