【发布时间】:2022-01-20 16:28:07
【问题描述】:
我有一个 CSV 目录,其中包含一些没有引号的文本列(我无法控制,因为这些来自外部源)。这些打开的文本列中有逗号,因此阅读它们会导致问题。如何正确转义它们,以免 spark 不会将它们解释为新列?
示例代码和数据:
file1 = spark.read.option("header", "true").option("quote", "'").option("inferSchema", "true").csv("file.csv")
样本数据
另一个相关的细节是,我实际上是使用 AWS Glue 从 S3 存储桶(递归)中提取这些文件,因此不能将它们作为 pandas 数据帧读取,然后将它们转换为 spark 数据帧。上面的代码是我用来测试的一些本地数据。
有什么想法或有用的提示吗?我在这里添加了赏金,如果有任何有用的答案,我会奖励它
展开表:
| ID | Note | Sum | Status | Count |
|---|---|---|---|---|
| 1 | Hello, there friend, what is going on. How are you?,,, | 123 | ACTIVE | 56 |
| 2 | yo, yo ,yo, what is up | 213 | INACTIVE | 5 |
| 3 | how are you, whats up, I'm fine. How are you,? | 2 | ACTIVE | 123 |
【问题讨论】:
-
我猜你需要先修复文件,然后才能读入数据框,可能是
sc.parallelize(csv lines).map(add quote somehow).toDF()Note 之后你有什么列? -
@Emma 不同数据类型的几列
-
Note后面是什么?您能否在问题中以纯文本形式包含一些示例行? -
您实际上在 Status 列中有 56 并且在 Count 列中有 ACTIVE 吗?还有 csv 有多大?
-
@Emma 所以这是一个 CSV 目录,我希望能够从 S3 递归读取。抱歉,打错了!
标签: csv apache-spark pyspark apache-spark-sql delimiter