Добавьте скрипт pyspark как шаг AWS - PullRequest
0 голосов
/ 23 марта 2020

У меня есть скрипт pyspark для чтения файла xml (присутствует на S3). Мне нужно добавить это как шаг в aws. Я использовал следующую команду

aws emr add-steps — cluster-id <cluster_id> — steps Type=spark,Name=POI,Args=[ — deploy-mode,cluster, — master,yarn, — conf,spark.yarn.submit.waitAppCompletion=true,<s3 location of pyspark script>],ActionOnFailure=CONTINUE

Я загрузил банку spark- xml в главный узел во время bootstrap и его подарок в

/ home / had oop

местоположение. Также в сценарий python я включил

conf = SparkConf().setAppName('Project').set("spark.jars", "/home/hadoop/spark-xml_2.11-0.4.1.jar").set("spark.driver.extraClassPath", "/home/hadoop/spark-xml_2.11-0.4.1.jar")

Но все равно его показ

py4j.protocol.Py4JJavaError: An error occurred while calling o56.load.
: java.lang.ClassNotFoundException: Failed to find data source: com.databricks.spark.xml. Please find packages at http://spark.apache.org/third-party-projects.html

1 Ответ

0 голосов
/ 26 апреля 2020

Вы задали мастер как пряжа и режим развертывания как кластер . Это означает, что ваш искровой драйвер будет находиться в одном из узлов CORE. В любом случае, EMR по умолчанию настроен на создание мастера приложений на одном из узлов CORE, а в мастере приложений будет находиться драйвер.

Для получения дополнительной информации см. Эту статью .

Таким образом, вы должны поместить свой jar в все CORE узлы (не в MASTER) и ссылаться на файл file:///home/hadoop/spark-xml_2.11-0.4.1.jar таким образом.

Или есть лучший способ поместить его в HDFS (скажем, под hdfs:///user/hadoop) и указать, что hdfs:///user/hadoop/spark-xml_2.11-0.4.1.jar

...