我正在使用spark3和下面是我的代码来读取csv文件
package spark.ny.project;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
public class MainApp {
public static void main(String[] args) {
// TODO Auto-generated method stub
SparkSession session = SparkSession.builder().appName("Sample App").master("local[*]").getOrCreate();
session.sparkContext().setLogLevel("ERROR");
Dataset<Row> df = session.read().format("com.databricks.spark.csv").option("quote","*" ).option("sep", ",")
.load("/home/deepak/sample_dataset/*.csv");
df.printSchema();
df.show(false);
}
}
下面是csv文件的内容
CallType , Methods
Internal , *ApplyChanges,ApproveCase*
下面是我得到的输出
root
|-- CallType : string (nullable = true)
|-- Methods: string (nullable = true)
+---------+---------------+
|CallType | Methods |
+---------+---------------+
|Internal | *ApplyChanges |
+---------+---------------+
“方法”列中缺少第二个值。如果我参考文件https://github.com/databricks/spark-csv#features,当使用引号选项时,引号内的分隔符将被忽略。
我不知道为什么我会得到那个输出,如何告诉spark不要把列值中的逗号当作分隔符。
1条答案
按热度按时间sxpgvts31#
我怀疑那是因为空白。引号必须紧跟在分隔符(逗号)后面。您可以通过指定
ignoreLeadingWhiteSpace
以及ignoreTrailingWhiteSpace
.