apache-spark - 将 pyspark 脚本提交到远程 Spark 服务器?

标签 apache-spark pyspark amazon-emr

这可能是一个非常愚蠢的问题,但我无法通过 Google 找到答案。我编写了一个简单的 pyspark ETL 脚本,该脚本读取 CSV 并将其写入 Parquet,如下所示:

spark = SparkSession.builder.getOrCreate()
sqlContext = SQLContext(spark.sparkContext)
df = sqlContext.read.csv(input_filename)
df.write.parquet(output_path)

为了运行它,我在 Docker 中启动了一个本地 Spark 集群:
$ docker run --network=host jupyter/pyspark-notebook

我运行 Python 脚本,它连接到这个本地 Spark 集群,一切都按预期工作。

现在我想在远程 Spark 集群 (AWS EMR) 上运行相同的脚本。我可以在初始化 Spark 上下文时在某处指定一个远程 IP 地址吗?还是我误解了 Spark 的工作原理?

最佳答案

您可以通过指定远程主机的 IP 地址来创建 spark session 。

spark = SparkSession.builder.master("spark://<ip>:<port>").getOrCreate()

对于 AWS EMR,不支持独立模式。您需要在客户端或集群模式下使用 yarn,并将 HADOOP_CONF_DIR 指向本地服务器上的某个位置,其中/etc/hadoop/conf 中的所有文件都存在。然后设置动态端口转发以连接到 EMR 集群。创建一个 Spark session ,如:
spark = SparkSession.builder.master('yarn').config('spark.submit.deployMode', 'cluster').getOrCreate()

引用 https://aws.amazon.com/premiumsupport/knowledge-center/emr-submit-spark-job-remote-cluster/

关于apache-spark - 将 pyspark 脚本提交到远程 Spark 服务器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54641574/

相关文章:

java - Spark 提交错误 : Invalid maximum heap size: -Xmx4g --jars, 但系统上有足够的内存

pyspark - 在 python 中安装 delta 模块的正确方法是什么?

Hadoop:AWS EMR 作业中的输入和输出路径

amazon-web-services - 如何将 AWS DynamoDB 表导出到 S3 存储桶?

hadoop - 亚马逊弹性 map 减少 : Job flow fails because output file is not yet generated

apache-spark - 在 pyspark.sql.functions.max().over(window) 上使用 .where() 在 Spark 2.4 上抛出 Java 异常

apache-spark - 在 Pyspark 中将时间戳更改为 UTC 格式

json - 解析json时由于输入结束而没有要映射的内容

python - 如何使用pycharm在远程spark集群中运行应用

python - 从 PySpark GroupBy 中的两列创建 JSON 字符串