2016-06-12 5 views
2

iを使用してデータフレームに対してCSVをロードしていスキップ -スパークCSVは、最初の行

sqlContext.read.format("com.databricks.spark.csv").option("header", "true"). 
       option("delimiter", ",").load("file.csv") 

を私の入力ファイルは、第二の行から最初の行とヘッダの日付を含んでいます。 例 - データフレームにCSVの変換中

20160612 
id,name,age 
1,abc,12 
2,bcd,33 

どのように私はこの最初の行をスキップすることができますか?

オプション1

答えて

4

は、ここで私はデータレンガモジュールはスキップラインオプションを提供していないようですので、考えることができますいくつかのオプションがあり、最初の行の前に「#」文字を追加します。その行はコメントとして自動的に考慮され、data.bricks csvモジュールによって無視されます。

オプション2:カスタマイズしたスキーマを作成し、それがcustomSchemaに予想より少ないトークンが含まれていますので、最初の行をドロップしますDROPMALFORMEDとしてmodeオプションを指定します。

import org.apache.spark.sql.types.{StructType, StructField, StringType, IntegerType}; 

val customSchema = StructType(Array(StructField("id", IntegerType, true), 
            StructField("name", StringType, true), 
            StructField("age", IntegerType, true))) 

val df = sqlContext.read.format("com.databricks.spark.csv"). 
         option("header", "true"). 
         option("mode", "DROPMALFORMED"). 
         schema(customSchema).load("test.txt") 

df.show 

16/06/12 21:24:05 WARN CsvRelation $:数値書式の例外です。 不正な形式の行削除:ID、名前、年齢

+---+----+---+ 
| id|name|age| 
+---+----+---+ 
| 1| abc| 12| 
| 2| bcd| 33| 
+---+----+---+ 

注意不正な形式のラインを落としたと言い、ここで警告メッセージ:

オプション3:「doesnの行を削除するには、独自のパーサーを書きます長さは3です。

関連する問題