web-dev-qa-db-ja.com

^ A(つまり\ 001)を区切り文字として使用するcsvをspark-csvで解析する方法は?

spark and Hive and big data and scala and all。私はsqlContextを取り、csvファイルをロードする単純な関数を書こうとしていますs3からDataFrameを返します。問題は、この特定のcsvが区切り文字として^ A(つまり\ 001)文字を使用し、データセットが巨大であるため、 "s/\ 001 /、/ g"を実行できないことですその上、フィールドにはカンマや区切り文字として使用できる他の文字が含まれている場合があります。

私が使用しているspark-csvパッケージに区切り文字オ​​プションがあることは知っていますが、エスケープされた0、0、1などではなく、\ 001を1文字として読み取るように設定する方法がわかりません。多分私はhiveContextか何かを使うべきですか?

11
Norsul Ronsul

GitHubページを確認すると、spark-csvのdelimiterパラメータがあります(これもお気付きのとおりです)。次のように使用します。

val df = sqlContext.read
    .format("com.databricks.spark.csv")
    .option("header", "true") // Use first line of all files as header
    .option("inferSchema", "true") // Automatically infer data types
    .option("delimiter", "\u0001")
    .load("cars.csv")
22
Daniel Zolnai

Spark 2.xおよびCSV APIでは、sepオプションを使用します。

val df = spark.read
  .option("sep", "\u0001")
  .csv("path_to_csv_files")
1
Mark Rajcok