Redshift: несоответствующее количество столбцов между таблицей и файлом, которые были сгенерированы искрой в формате паркета - PullRequest
1 голос
/ 13 февраля 2020

Входной набор данных был сгенерирован командой 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, разве паркет не подходит для загрузки? в красное смещение?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...