Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hive 蜂窝表上的时间戳_Hive_Cloudera_Sqoop_Impala_Cloudera Quickstart Vm - Fatal编程技术网

Hive 蜂窝表上的时间戳

Hive 蜂窝表上的时间戳,hive,cloudera,sqoop,impala,cloudera-quickstart-vm,Hive,Cloudera,Sqoop,Impala,Cloudera Quickstart Vm,我正在尝试将数据作为拼花从Oracle加载到Hive。每次我将带有日期/时间戳列的表加载到配置单元时,它都会自动将这些列转换为BIGINT。是否可以使用sqoop和拼花文件将时间戳/日期格式加载到配置单元 已尝试先在配置单元中创建表,然后使用impala将数据加载到拼花地板文件中。 仍然因错误而失败 “文件XX的第XX列具有不兼容的拼花地板架构: 时间戳“ 顺便说一句,我正在使用cloudera quickstart虚拟机。谢谢尝试使用sqoop的配置 --map-column-hive <

我正在尝试将数据作为拼花从Oracle加载到Hive。每次我将带有日期/时间戳列的表加载到配置单元时,它都会自动将这些列转换为BIGINT。是否可以使用sqoop和拼花文件将时间戳/日期格式加载到配置单元

已尝试先在配置单元中创建表,然后使用impala将数据加载到拼花地板文件中。
仍然因错误而失败

“文件XX的第XX列具有不兼容的拼花地板架构: 时间戳“


顺便说一句,我正在使用cloudera quickstart虚拟机。谢谢

尝试使用sqoop的配置

--map-column-hive
<cols_name>=TIMESTAMP
——映射列配置单元
=时间戳
来自

如果使用Sqoop将RDBMS数据转换为拼花地板,请小心解释来自日期、日期时间或时间戳列的任何结果值。基础值表示为Parquet INT64类型,在Impala表中表示为BIGINT。拼花地板值表示以毫秒为单位的时间,而Impala将BIGINT解释为以秒为单位的时间。因此,如果在通过这种方式从Sqoop导入的拼花地板表中有一个BIGINT列,那么在解释为时间戳类型时,将值除以1000

或者,您也可以像这样使用配置单元查询来获得所需时间戳格式的结果

FROM_UNIXTIME(CAST(SUBSTR(timestamp_column, 1,10) AS INT)) AS timestamp_column;

已经尝试过了,但是sqoop似乎忽略了这个配置,一旦我们使用--as parquetfile optionI找不到任何选项----as parquetfile“只有3种类型:
--as avrodatafile将数据导入Avro数据文件--as sequencefile将数据导入sequencefile--as textfile将数据导入纯文本(默认)
试试这个:谢谢,似乎我无法将日期/时间戳格式从拼花导入配置单元。这个问题现在与拼花文件有关。您可以使用ORC格式在时间戳中导入,选项为
--map column hive=timestamp
。ORC文件格式的性能优于拼花。@Sandepsing sqoop导入是否支持直接以ORC格式导入?我认为我们必须首先以文本形式导入,然后创建配置单元表以ORC格式存储?@AdityaAgarwal不是直接导入,而是使用
--hcatalog table
选项,您可以直接导入现有的ORC配置单元表。