非常新的火花和蜂巢和大数据和scala等等。我试图编写一个简单的函数,它接受一个sqlContext,从s3加载一个csv文件并返回一个DataFrame。问题是这个特定的csv使用^ A(即\ 001)字符作为分隔符,数据集很大,所以我不能只做一个" s / \ 001 /,/ g"在上面。此外,这些字段可能包含逗号或其他可能用作分隔符的字符。
我知道我使用的spark-csv软件包有一个分隔符选项,但我不知道如何设置它以便它将\ 001作为一个字符读取而不是像转义0,0和1.也许我应该使用hiveContext或其他东西?
答案 0 :(得分:19)
如果你检查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")
答案 1 :(得分:0)
对于Spark 2.x和CSV API,请使用sep
选项:
val df = spark.read
.option("sep", "\u0001")
.csv("path_to_csv_files")