[英]Read Multiple Text Files in PySpark
我有很多文本文件存儲在 S3 中,幾乎分區,但不完全。 我想閱讀並結合所有這些。 鍵的前綴如下:
s3_keys = ['s3a://prd-bucket//PROD/data/2021-04-16/part-2144.log',
's3a://prd-bucket//PROD/data/2021-04-16/part-2146.log',
's3a://prd-bucket//PROD/data/2021-04-16/part-2148.log',
's3a://prd-bucket//PROD/data/2021-04-16/part-2150.log',
's3a://prd-bucket//PROD/data/2021-04-16/part-2164.log',
's3a://prd-bucket//PROD/data/2021-04-16/part-requeue-client-xxx.log'
]
我嘗試按照這個答案進行操作,但由於某些奇怪的原因, spark.read.text
破壞了第一個路徑之后每個路徑中預先添加的文件系統:
df = (
spark.read.option('mode', 'FAILFAST')
.text(','.join(s3_keys))
)
Py4JJavaError:調用 o40880.text 時出錯。 :org.apache.spark.sql.AnalysisException:路徑不存在:s3a://prd-bucket/PROD/data/2021-04-16/part-2144.log,s3a:/prd-bucket/PROD/data /2021-04-16/part-2146.log...
請注意s3a:/
而不是s3a://
。 為什么會這樣? 我也很好奇這種路徑修改是否有限制......類似於 AmazonS3Exception: Request-URI Too Large
類似的問題問在這里,但我需要一個解決方案 PySpark (2.4) 在 S3 上。
您正在傳遞由 分隔的多個路徑,
作為一個字符串,這就是您遇到錯誤的原因。
Py4JJavaError: An error occurred while calling o40880.text. : org.apache.spark.sql.AnalysisException: Path does not exist: s3a://prd-bucket/PROD/data/2021-04-16/part-2144.log,s3a:/prd-bucket/PROD/data/2021-04-16/part-2146.log ...
將多個路徑作為可變參數或列表傳遞。 試試下面的代碼。
df = (
spark.read.option('mode', 'FAILFAST')
.text(s3_keys)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.