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か何かを使うべきですか?
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")
Spark 2.xおよびCSV APIでは、sep
オプションを使用します。
val df = spark.read
.option("sep", "\u0001")
.csv("path_to_csv_files")