Я работаю над приложением Python, которое просто конвертирует CSV-файл в формат паркет, совместимый с hive / athena, и для этого использую библиотеки fastparquet и pandas.В csv-файле есть значения меток времени, такие как 2018-12-21 23:45:00
, которые должны быть записаны как тип timestamp
в файле паркета.Ниже мой код, который выполняется,
columnNames = ["contentid","processed_time","access_time"]
dtypes = {'contentid': 'str'}
dateCols = ['access_time', 'processed_time']
s3 = boto3.client('s3')
obj = s3.get_object(Bucket=bucketname, Key=keyname)
df = pd.read_csv(io.BytesIO(obj['Body'].read()), compression='gzip', header=0, sep=',', quotechar='"', names = columnNames, error_bad_lines=False, dtype=dtypes, parse_dates=dateCols)
s3filesys = s3fs.S3FileSystem()
myopen = s3filesys.open
write('outfile.snappy.parquet', df, compression='SNAPPY', open_with=myopen,file_scheme='hive',partition_on=PARTITION_KEYS)
, код успешно запущен, ниже - кадр данных, созданный pandas
contentid object
processed_time datetime64[ns]
access_time datetime64[ns]
И, наконец, когда я запросил файл паркета в Hive иафина, значение метки времени +50942-11-30 14:00:00.000
вместо 2018-12-21 23:45:00
Любая помощь высоко ценится