15

Spark や Hive、ビッグデータ、scala など、まったく新しいものです。sqlContext を受け取り、s3 から csv ファイルをロードして DataFrame を返す単純な関数を作成しようとしています。問題は、この特定の csv が ^A (つまり \001) 文字を区切り文字として使用し、データセットが巨大であるため、「s/\001/,/g」を実行できないことです。さらに、フィールドには、区切り記号として使用できるコンマやその他の文字が含まれている場合があります。

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

4

2 に答える 2

30

GitHub ページを確認すると、delimiterspark-csv のパラメーターがあります (ご指摘のとおり)。次のように使用します。

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")
于 2016-03-15T09:55:50.873 に答える