問題
您正在嚐試查詢一個外部Hive表,但它一直未能跳過標題行,即使TBLPROPERTIES (' skip.header.line.count ' = ' 1 ')在HiveContext中設置。
您可以通過使用這個示例代碼創建一個表來重現這個問題。
%sql CREATE EXTERNAL TABLE school_test_score (' school ' varchar(254), ' student_id ' varchar(254), ' gender ' varchar(254), ' pretest ' varchar(254), ' posttest ' varchar(254)) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS INPUTFORMAT 'TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io。HiveIgnoreKeyTextOutputFormat' LOCATION 'dbfs:/FileStore/table_header/' TBLPROPERTIES ('skip.header.line。數' = ' 1 ')
如果嚐試從表中選擇前五行,則第一行是標題行。
sql SELECT * FROM school_test_score LIMIT
導致
如果直接從Hive查詢,則會正確跳過標題行。Apache Spark不識別skip.header.line.count屬性在HiveContext,所以它不會跳過標題行。
Spark的行為與設計一致。
解決方案
您需要使用Spark選項來創建帶有標題選項的表。
%sql CREATE TABLE student_test_score (school String, student_id String, gender String, pretest String, posttest String) USING CSV OPTIONS(路徑"dbfs:/FileStore/table_header/", delimiter ",", header "true");
從表中選擇前五行,標題行不包括在內。
sql SELECT * FROM school_test_score LIMIT