2017-09-13 154 views
0

我有一个CSV,内容如下特殊字符

id,pos_id,supplier_id 
5127973,2000,"test 
5704355,77,/10122 

我想把它加载到数据帧和数据,因为它是文件,该数据帧将通过JDBC

装入postresql

这里我所做的:

val conf = new SparkConf().setMaster("local[2]").setAppName("my app") 
val sc = new SparkContext(conf) 
val sparkSession = SparkSession.builder.config(conf = conf).appName("spark session example").getOrCreate() 

val df= sparkSession.sqlContext.read.format("com.databricks.spark.csv") 
     .option("header", "true").option("escape", "\"").load("C:\\Users\\MHT\\Desktop\\data.csv") 
    df.show() 
    +-------+------+--------------------+ 
    |  id|pos_id|   supplier_id| 
    +-------+------+--------------------+ 
    |5127973| 2000|test 
    5704355,77,/...| 
    +-------+------+--------------------+ 

我应该怎么做才能在数据帧相同的数据,然后在postresql相同的数据。

+0

第一个问题还不清楚 - 实际问题是什么 - 是否由于未封闭的双引号将两行读为一行? (如果是这样,所有的PostgreSQL的东西只是冗余和混乱)。其次 - 你使用的是Spark版本?我正在使用2.1.1并且看到不同的结果(CSV正确解析为两行) –

+0

@Tzach Zohar,当我显示数据帧时,我得到的是与csv文件的实际内容不同,就是这样,我怎么能得到同样我谈论报价 –

+0

你用什么Spark版本? –

回答

0

将csv数据写入HDFS并使用sqoop,我们可以通过在$ SQOOP_HOME/lib目录中提供所需的jdbc jar将数据导出到目标数据库。

+1

这不是对这个问题的回答,问题的作者想在Spark中做到这一点,这是可能的,所以回答应该是关于Spark –