【问题标题】:Spark DataFrame - Read pipe delimited file using SQL?Spark DataFrame - 使用 SQL 读取管道分隔文件?
【发布时间】:2018-05-16 04:38:42
【问题描述】:

基于Spark - load CSV file as DataFrame?

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

val df = spark.sql("SELECT * FROM csv.`csv/file/path/in/hdfs`")

我知道可以使用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'}

【问题讨论】:

  • SELECT * FROM csv.csv/file/path/in/hdfs OPTIONS (delimiter , "|" )怎么样

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


【解决方案1】:

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操作,你可以跳过加载数据帧的第二步。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2020-02-19
    • 2019-07-01
    • 2016-11-29
    相关资源
    最近更新 更多