我想将带有时间列的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")
答案 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
并键入
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中,因为此测试每次都通过