将带有时间列的csv读入hdfs无法正常工作

时间:2019-07-24 21:52:23

标签: scala apache-spark-sql

我想将带有时间列的csv读取到hadoop中,其中时间列将作为字符串读取。

我尝试在textedit中创建csv,而不是在intellij中创建。 以及及时逃脱结肠。

example data:
time
11:11:11

Some hadoop wrapper...

期望:bleh =数据框中的值在数据中...

ActuaL: 19/07/24 14:30:33 WARN CSV关系:删除格式错误的行:11:11:11

java.lang.UnsupportedOperationException:空集合

但是,通过Spark进行阅读...

import org.apache.spark.sql._
val spark: SparkSession = SparkSession.builder().
  appName("myapp").master("local").getOrCreate()

val bleh = spark.read.csv("mycsv")

1 个答案:

答案 0 :(得分:0)

尝试通过从Spark运行简单测试,然后从github克隆spark,首先将问题与“ hadoop包装器”隔离开,然后创建文件并将测试添加到CSVSuite.csv上,其中其他CSV加载在正在完成。然后执行测试,您可以看到它与您的测试数据配合得很好。因此,我们可以将其隔离到hadoop包装器中。

git clone https://github.com/apache/spark.git
cd spark
git checkout v2.1.2-rc4 
vi sql/core/src/test/resources/test-data/time.csv

然后只需按I并键入

,即可在vi中修改文件
time
11:11:11

然后只需修改CSVSuite文件

vi sql/core/src/test/scala/org/apache/spark/sql/execution/datasources/csv/CSVSuite.scala

通过将文本添加为​​该测试套件中的许多测试之一

  test("simple-csv-test-#2") {
    val timeRows = spark
      .read
      .format("csv")
      .option("header", "true")
      .load(testFile(timeFile))
      .collect()
      .length

    assert(timeRows == 1)

  }

然后运行构建脚本

build/sbt "sql/testOnly org.apache.spark.sql.execution.datasources.csv.CSVSuite -- -z simple-csv-test-#2"

因此您可以看到问题不在Spark中,因为此测试每次都通过