Входной набор данных был сгенерирован командой pyspark ниже,
dfs_ids1.write.parquet('./outputs-parquet/i94-apr16.parquet', mode='overwrite')
Оператор COPY и сообщение об ошибке:
COPY staging_ids FROM 's3://sushanth-dend-capstone-files/i94-apr16.parquet/' IAM_ROLE 'arn:aws:iam::164084742828:role/dwhRole' FORMAT AS PARQUET ;
S3 Query Exception (Fetch)
DETAIL:
-----------------------------------------------
error: S3 Query Exception (Fetch)
code: 15001
context: Task failed due to an internal error. Unmatched number of columns between table and file. Table columns: 23, Data columns: 22, File name: https://s3.us-west-2.amazonaws.com/sushanth-dend-capstone-files/i94-apr16.parquet/part-00000-6034cb60-860e-4a6c-a86d-6
query: 1867
location: dory_util.cpp:1119
process: fetchtask_thread [pid=1331]
-----------------------------------------------
При проверке паркета с помощью S3 " Выберите из ", обнаружено, что для некоторых наборов JSON столбец occup
отсутствует, этот указанный столбец c в основном содержит" null или STU ".
{
"CoC": 101,
"CoR": 101,
"PoE": "BOS",
"landing_state": "MA",
"age": 58,
"visa_issued_in": "TIA",
"biryear": 1958,
"gender": "M",
"airline": "LH",
"admnum": 2147483647,
"fltno": "00422",
"visatype": "B1",
"arrival_mode": "Air",
"visit_purpose": "Business",
"arrival_dt": "2016-04-01",
"departure_dt": "2016-04-05",
"DaysinUS": 4,
"added_to_i94": "2016-04-01",
"allowed_until": "2016-04-06",
"entry_exit": "exit",
"month": 4
}
Чтобы убедиться, что этот столбец отсутствует, я прочитал этот файл паркета в Афине, используя следующие параметры:
S3 Путь: s3://sushanth-dend-capstone-files/i94-apr16.parquet/
Массовая загрузка столбцов: CoC int, CoR int, PoE string, landing_state string, age int, visa_issued_in string, occup string, biryear int, gender string, airline string, admnum int, fltno string, visatype string, arrival_mode string, visit_purpose string, arrival_dt date, departure_dt date, DaysinUS int, added_to_i94 date, allowed_until date, entry_exit string, month int
Афина DDL
CREATE EXTERNAL TABLE IF NOT EXISTS capstone.staging_ids (
`coc` int,
`cor` int,
`poe` string,
`landing_state` string,
`age` int,
`visa_issued_in` string,
`occup` string,
`biryear` int,
`gender` string,
`airline` string,
`admnum` int,
`fltno` string,
`visatype` string,
`arrival_mode` string,
`visit_purpose` string,
`arrival_dt` date,
`departure_dt` date,
`daysinus` int,
`added_to_i94` date,
`allowed_until` date,
`entry_exit` string,
`month` int
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1'
) LOCATION 's3://sushanth-dend-capstone-files/i94-apr16.parquet/'
TBLPROPERTIES ('has_encrypted_data'='false');
Когда я запускаю запрос, я вижу столбец «занимаемый» STU для некоторых строк.
Вопрос в том,
- Как записать все столбцы из фрейма данных spark в файл формата паркета?
- Как загрузить этот тип файла в красное смещение с помощью оператора COPY, разве паркет не подходит для загрузки? в красное смещение?