将 Spark DataFrame 导出到 S3

Exporting Spark DataFrame to S3

所以在某些操作之后我在 Spark DataFrame 中有一些数据,具体来说,org.apache.spark.sql.DataFrame = [_1: string, _2: string ... 1 more field]

现在,当我执行 df.show() 时,我得到以下输出,这是预期的。

+--------------------+--------------------+--------------------+
|                  _1|                  _2|                  _3|
+--------------------+--------------------+--------------------+
|industry_name_ANZSIC|'industry_name_AN...|.isComplete("indu...|
|industry_name_ANZSIC|'industry_name_AN...|.isContainedIn("i...|
|industry_name_ANZSIC|'industry_name_AN...|.isContainedIn("i...|
|        rme_size_grp|'rme_size_grp' is...|.isComplete("rme_...|
|        rme_size_grp|'rme_size_grp' ha...|.isContainedIn("r...|
|        rme_size_grp|'rme_size_grp' ha...|.isContainedIn("r...|
|                year|  'year' is not null| .isComplete("year")|
|                year|'year' has type I...|.hasDataType("yea...|
|                year|'year' has no neg...|.isNonNegative("y...|
|industry_code_ANZSIC|'industry_code_AN...|.isComplete("indu...|
|industry_code_ANZSIC|'industry_code_AN...|.isContainedIn("i...|
|industry_code_ANZSIC|'industry_code_AN...|.isContainedIn("i...|
|            variable|'variable' is not...|.isComplete("vari...|
|            variable|'variable' has va...|.isContainedIn("v...|
|                unit|  'unit' is not null| .isComplete("unit")|
|                unit|'unit' has value ...|.isContainedIn("u...|
|               value| 'value' is not null|.isComplete("value")|
+--------------------+--------------------+--------------------+

当我尝试将数据帧作为 csv 导出到我的 S3 存储桶时出现问题。

我的代码是:df.coalesce(1).write.mode("Append").csv("s3://<my path>")

但是在我的 S3 路径中生成的 csv 充满了乱码或富文本。此外,spark 提示在执行后不会重新出现(意味着执行没有完成?)这是我的 S3 中生成的 csv 的示例屏幕截图:

我做错了什么,我该如何纠正?

S3:简短描述。

当您更改 URI 方案上的字母时,会产生很大的不同,因为它会导致使用不同的软件连接到 S3。

这是三者的区别:

s3 是基于块的覆盖在 Amazon S3 之上,而 s3n/s3a 不是。这些都是基于对象的。

s3n 在考虑大小时支持最大 5GB 的对象,而 s3a 支持最大 5TB 的对象并且具有更高 performance.Note s3a 是 s3n 的后继者。