如何解析使用 ^A(即 \001)作为 spark-csv 分隔符的 csv?
How to parse a csv that uses ^A (i.e. \001) as the delimiter with spark-csv?
对 spark 和 hive 以及大数据和 scala 以及所有的东西来说都是非常新的。我正在尝试编写一个简单的函数,它接受一个 sqlContext,从 s3 加载一个 csv 文件和 returns 一个 DataFrame。问题是这个特定的 csv 使用 ^A(即 \001)字符作为分隔符并且数据集很大,所以我不能只对它做 "s/[=14=]1/,/g"。此外,这些字段可能包含逗号或其他我可能用作分隔符的字符。
我知道我正在使用的 spark-csv 包有一个分隔符选项,但我不知道如何设置它以便它将 \001 读取为一个字符而不是像转义的 0 , 0 和 1。也许我应该使用 hiveContext 或其他东西?
如果您查看 GitHub 页面,spark-csv 有一个 delimiter
参数(您也注意到了)。
像这样使用它:
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true") // Use first line of all files as header
.option("inferSchema", "true") // Automatically infer data types
.option("delimiter", "\u0001")
.load("cars.csv")
使用 Spark 2.x 和 CSV API,使用 sep
选项:
val df = spark.read
.option("sep", "\u0001")
.csv("path_to_csv_files")
对 spark 和 hive 以及大数据和 scala 以及所有的东西来说都是非常新的。我正在尝试编写一个简单的函数,它接受一个 sqlContext,从 s3 加载一个 csv 文件和 returns 一个 DataFrame。问题是这个特定的 csv 使用 ^A(即 \001)字符作为分隔符并且数据集很大,所以我不能只对它做 "s/[=14=]1/,/g"。此外,这些字段可能包含逗号或其他我可能用作分隔符的字符。
我知道我正在使用的 spark-csv 包有一个分隔符选项,但我不知道如何设置它以便它将 \001 读取为一个字符而不是像转义的 0 , 0 和 1。也许我应该使用 hiveContext 或其他东西?
如果您查看 GitHub 页面,spark-csv 有一个 delimiter
参数(您也注意到了)。
像这样使用它:
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true") // Use first line of all files as header
.option("inferSchema", "true") // Automatically infer data types
.option("delimiter", "\u0001")
.load("cars.csv")
使用 Spark 2.x 和 CSV API,使用 sep
选项:
val df = spark.read
.option("sep", "\u0001")
.csv("path_to_csv_files")