对于spark、hive、大数据和scala等等都是非常新的东西。我正在尝试编写一个简单的函数,它接受一个sqlContext,从s3加载一个csv文件并返回一个DataFrame。问题是,这个特定的csv使用^A (即\001)字符作为分隔符,并且数据集很大,所以我不能只对其执行"s/\001/,/g“。此外,这些字段可能包含逗号或其他我可能用作分隔符的字符。
我知道我正在使用的spark-csv包有一个分隔符选项,但我不知道如何设置它,使它将\001读取为一个字符,而不是像转义的0、0和1那样的字符。也许我应该使用hiveContext或其他什么?
发布于 2016-03-15 17:55:51
如果查看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")发布于 2019-05-08 00:46:40
对于Spark 2.x和CSV API,使用sep选项:
val df = spark.read
.option("sep", "\u0001")
.csv("path_to_csv_files")https://stackoverflow.com/questions/36007686
复制相似问题