我正在两个表之间进行简单的内部联接,但是我不断收到如下所示的警告。我在其他帖子中看到,可以忽略该警告,但是我的工作以失败而告终,并且没有进展。这些表非常大(120亿行),但我仅将一个表中的三列添加到另一个表中。当将数据集减少到几百万行并在Amazon Sagemaker Jupyter笔记本中运行脚本时。它工作正常。但是,当我在整个数据集的EMR群集上运行它时,它会失败。我什至运行了似乎无法运行的特定快照分区,该分区在sagemaker中起作用。从一张表中读取该作业没有问题,似乎是另一张表出现了问题
INFO FileScanRDD:正在读取文件路径:s3a://path/EES_FD_UVA_HIST/date=2019-10-14/part-00056-ddb83da5-2e1b-499d-a52a-cad16e21bd2c-c000.snappy.parquet,范围:0-102777097,分区值:[18183] 2006年4月20日15:51:58警告S3AbortableInputStream:并非从S3ObjectInputStream,中止HTTP连接。这可能是一个错误并可能导致行为不佳。仅请求您的字节使用后需要通过远程GET或耗尽输入流。 2006年4月20日15:51:58 WARN S3AbortableInputStream:并非从S3ObjectInputStream,中止HTTP连接。这可能是一个错误并可能导致行为不佳。仅请求您的字节使用后需要通过远程GET或耗尽输入流。 2006年4月20日15:52:03 INFO CoarseGrainedExecutor后端:驱动程序命令shutdown 20/04/06 15:52:03 INFO MemoryStore:MemoryStore已清除20/04/06 15:52:03 INFO BlockManager:BlockManager停止了20/04/0615:52:03 INFO ShutdownHookManager:名为Shutdown的挂钩
这是我的代码:
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
uvalim=spark.read.parquet("s3://path/UVA_HIST_WITH_LIMITS")
uvaorg=spark.read.parquet("s3a://path/EES_FD_UVA_HIST")
config=uvalim.select('SEQ_ID','TOOL_ID', 'DATE' ,'UL','LL')
uva=uvaorg.select('SEQ_ID', 'TOOL_ID', 'TIME_STAMP', 'RUN_ID', 'TARGET', 'LOWER_CRITICAL', 'UPPER_CRITICAL', 'RESULT', 'STATUS')
uva_config=uva.join(config, on=['SEQ_ID','TOOL_ID'], how='inner')
uva_config.write.mode("overwrite").parquet("s3a://path/Uvaconfig.parquet")
是否有调试方法?
您可以切换为使用s3而不是s3a。不建议将ilive s3a用于EMR。另外,您可以在调试中运行作业。
sc = spark.sparkContext
sc.setLogLevel('DEBUG')