Spark DataFrame - 使用SQL读取管道分隔文件?

时间:2017-12-02 03:02:22

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

基于Spark - load CSV file as DataFrame?

是否可以使用SQL指定选项来设置分隔符,空字符和引用?

spark.read.format("csv").option("delimiter", "|")

我知道可以使用OPTIONS完成,但理想情况下我不必这样做。

更新信息

似乎我必须使用反向标记来传递路径。

当我尝试通过== SQL == SELECT * FROM csv.`csv/file/path/in/hdfs` OPTIONS (delimiter , "|" ) -----------------------------------^^^ Error in query: mismatched input '(' expecting {<EOF>, ',', 'WHERE', 'GROUP', 'ORDER', 'HAVING', 'LIMIT', 'JOIN', 'CROSS', 'INNER', 'LEFT', 'RIGHT', 'FULL', 'NATURAL', 'LATERAL', 'WINDOW', 'UNION', 'EXCEPT', 'MINUS', 'INTERSECT', 'SORT', 'CLUSTER', 'DISTRIBUTE', 'ANTI'}

{{1}}

1 个答案:

答案 0 :(得分:0)

Althoguh不是一个单一的灵魂分子,以下可能适合你:

spark.sql("CREATE TABLE some_table USING com.databricks.spark.csv OPTIONS (path \"csv/file/path/in/hdfs\", delimeter \"|\")");
val df = spark.sql("SELECT * FROM some_table");

当然,如果要直接在some_table上执行某些SQL操作,可以跳过加载到数据帧的第二步。