列值内的逗号

  • 本文关键字: apache-spark
  • 更新时间 :
  • 英文 :


我使用spark 3,下面是我的代码来读取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不要将列值中的逗号视为分隔符。

我怀疑这是因为空白。引号必须紧跟着分隔符(逗号)。您可以通过指定ignoreLeadingWhiteSpaceignoreTrailingWhiteSpace来解决这个问题。

Dataset<Row> df = session.read().format("com.databricks.spark.csv")
.option("quote", "*")
.option("sep", ",")
.option("ignoreLeadingWhiteSpace", "true")
.option("ignoreTrailingWhiteSpace", "true")
.load("/home/deepak/sample_dataset/*.csv");

相关内容

  • 没有找到相关文章

最新更新