【问题标题】:Submitting spark job to AWS EMR cluster from aws-cli从 aws-cli 向 AWS EMR 集群提交 Spark 作业
【发布时间】:2018-11-13 23:30:49
【问题描述】:

我正在尝试弄清楚如何从命令行 aws-cli 将 spark 步骤正确添加到我的 aws-emr 集群。

一些背景:

我有一个需要读取和分析的大型数据集(数千个 .csv 文件)。我有一个看起来像这样的 python 脚本:

analysis_script.py

import pandas as pd
from pyspark.sql import SQLContext, DataFrame
from pyspark.sql.types import *
from pyspark import SparkContext
import boto3

#Spark context
sc = SparkContext.getOrCreate()
sqlContext = SQLContext(sc)

df = sqlContext.read.format("org.apache.spark.sql.execution.datasources.csv.CSVFileFormat").load("s3n://data_input/*csv")

def analysis(df):
    #do bunch of stuff. Create output dataframe
    return df_output

df_output = analysis(df)

df_output.save_as_csv_to_s3_somehow

我希望输出 csv 文件到目录 s3://dataoutput/

我需要将 py 文件添加到 jar 中吗?我使用什么命令来利用我的集群节点运行此分析,以及如何将输出获取到正确的目录?谢谢。

我使用以下方式启动集群:

aws emr create-cluster --release-label emr-5.5.0\
--name PySpark_Analysis\
--applications Name=Hadoop Name=Hive Name=Spark Name=Pig Name=Ganglia Name=Presto Name=Zeppelin\
--instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=r3.xlarge InstanceGroupType=CORE,InstanceCount=4,InstanceType=r3.xlarge\
--region us-west-2\
--log-uri s3://emr-logs-zerex/ 
--configurations file://./zeppelin-env-config.json/
--bootstrap-actions Name="Install Python Packages",Path="s3://emr-code/bootstraps/install_python_packages_custom.bash"

【问题讨论】:

    标签: amazon-web-services amazon-s3 pyspark aws-cli emr


    【解决方案1】:

    我通常使用aws emr create-cluster--steps 参数,可以像--steps file://mysteps.json 一样指定。该文件具有以下外观:

    [
        {
            "Type": "Spark",
            "Name": "KB Spark Program",
            "ActionOnFailure": "TERMINATE_JOB_FLOW",
            "Args": [
                "--verbose",
                "--packages",
                "org.apache.spark:spark-streaming-kafka-0-8_2.11:2.1.1,com.amazonaws:aws-java-sdk-s3:1.11.27,org.apache.hadoop:hadoop-aws:2.7.2,com.databricks:spark-csv_2.11:1.5.0",
                "/tmp/analysis_script.py"
            ]
        },
            {
            "Type": "Spark",
            "Name": "KB Spark Program",
            "ActionOnFailure": "TERMINATE_JOB_FLOW",
            "Args": [
                "--verbose",
                "--packages",
                "org.apache.spark:spark-streaming-kafka-0-8_2.11:2.1.1,com.amazonaws:aws-java-sdk-s3:1.11.27,org.apache.hadoop:hadoop-aws:2.7.2,com.databricks:spark-csv_2.11:1.5.0",
                "/tmp/analysis_script_1.py"
            ]
        }
    ]
    

    您可以阅读有关步骤here 的更多信息。我使用引导脚本将我的代码从S3 加载到/tmp,然后在文件中指定执行步骤。

    至于写信给s3 here 是一个解释这一点的链接。

    【讨论】:

      猜你喜欢
      • 2019-05-30
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      相关资源
      最近更新 更多