将本地CSV读入spark数据集时出错

时间:2017-08-29 01:32:21

标签: apache-spark apache-spark-sql spark-dataframe

我有一个本地CSV“test.csv”,其中第一行是列名,后面的行是数据。 我尝试在Java中读取这样的CSV:

UIView *view = [[UIView alloc]initWithFrame:CGRectMake(20, 130, 300, 100)];
[view setBackgroundColor:gradientColor];
[self.view addSubview:view];
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(20, 240, 300, 100)];
[label setBackgroundColor:gradientColor];
[self.view addSubview:label];

这里建议:
Read csv as Data Frame in spark 1.6

但我一直收到错误:

Dataset<Row> test_table = sparkSession()
    .sqlContext()
    .read()
    .format("com.databricks.spark.csv")
    .option("header", "true")
    .option("inferSchema", "true")
    .load("test.csv");

问题是什么以及如何从CSV读取数据集?

2 个答案:

答案 0 :(得分:1)

univocity-parsers图书馆的作者。发生这种情况是因为内部spark将最大值长度设置为-1(意味着没有限制)。这是在univocity-parsers 2.2.0版本中引入的。

只需确保此库版本大于2.2.0,您应该没问题,因为旧版本不支持将maxCharsPerColumn属性设置为-1

如果您的类路径中有该库的多个版本,请删除旧版本。理想情况下,您需要更新到最新版本(目前为2.5.4。)并仅使用它。它应该工作得很好,因为我们确保对库的任何更改都是向后兼容的。

答案 1 :(得分:0)

主要是由于您使用的依赖项。 尝试使用其他类似的

   --packages com.databricks:spark-csv_2.10:1.5.0 or spark-csv_2.10:1.4.0 

它应该有用。