Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Oracle Hadoop中的日期处理_Oracle_Date_Hive_Sqoop - Fatal编程技术网

Oracle Hadoop中的日期处理

Oracle Hadoop中的日期处理,oracle,date,hive,sqoop,Oracle,Date,Hive,Sqoop,我是大数据/Hadoop生态系统的新手,我注意到,在各种技术中,日期并非总是以标准方式处理。我计划使用带有Avro和Parquet文件格式的Sqoop将Oracle的数据摄取到HDFS上的配置单元表中。Hive继续将我的日期导入BIGINT值,我更喜欢时间戳。我已尝试使用“-map column hive”覆盖。。。但它仍然不起作用 寻找关于处理此用例日期的最佳方法的建议 如果使用Sqoop将RDBMS数据转换为拼花地板,请小心解释来自日期、日期时间或时间戳列的任何结果值。基础值表示为Parqu

我是大数据/Hadoop生态系统的新手,我注意到,在各种技术中,日期并非总是以标准方式处理。我计划使用带有Avro和Parquet文件格式的Sqoop将Oracle的数据摄取到HDFS上的配置单元表中。Hive继续将我的日期导入BIGINT值,我更喜欢时间戳。我已尝试使用“-map column hive”覆盖。。。但它仍然不起作用

寻找关于处理此用例日期的最佳方法的建议

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

目前,Avro表不能包含时间戳列。如果需要在Avro表中存储日期和时间值,作为一种解决方法,可以使用值的字符串表示形式,使用UNIX_TIMESTAMP()函数将值转换为BIGINT,或者使用EXTRACT()函数为各个日期和时间字段创建单独的数字列

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

FROM_UNIXTIME(CAST(SUBSTR(timestamp_column, 1,10) AS INT)) AS timestamp_column;
另一种解决方法是在sqoop命令中使用
--query
导入数据,您可以将列转换为时间戳格式

示例

--query 'SELECT CAST (INSERTION_DATE AS TIMESTAMP) FROM tablename WHERE $CONDITIONS'

如果SELECT查询有点长,可以使用配置文件缩短命令行调用的长度。这里是

StackOverflow不是收集问题想法和建议的合适网站。请用一个具体的问题案例来重申你的问题,说明你到目前为止做了哪些尝试,以及你在这个过程中遇到了哪些困难。可能重复