hive选择要对其执行case语句的列

ztigrdn8  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(325)

这将动态地将数据从dynamodb导出到s3。

-- Load S3 Table with data from DynamoDB
INSERT OVERWRITE TABLE s3_table SELECT * FROM dynamodb_table;

问题是它会在一堆 \N . 我可以手写它看起来像

-- Load S3 Table with data from DynamoDB
   INSERT OVERWRITE TABLE s3_table SELECT DCS_ID, CASE WHEN MAKE IS NULL THEN "" ELSE MAKE END, CASE WHEN MODEL IS NULL THEN "" ELSE MODEL END FROM dynamodb_table;

问题是选择列时要说“when column is null then”“else column end”
电流输出如下所示

PORTAL  1.5.1.25.2      2013-08-09 13:45:20.126 2013-08-09 13:45:20.282 \N      \N      \N      \N      \N      \N

所需的输出如下所示

PORTAL  1.5.1.25.2      2013-08-13 18:18:24.667 2013-08-13 18:18:24.832
jucafojl

jucafojl1#

配置单元输出包含null值的字符串“\n”(以区别于空白),因此您必须准备每个列,或者在之后处理输出(如果数据量很大,则可以使用流作业)
我经常使用 coalesce 此函数: coalesce 接受多个参数并返回第一个非null(如果全部为null,则返回null)。在您的示例中,为了避免输出中出现空值,可以执行以下操作:

INSERT OVERWRITE TABLE s3_table
SELECT coalesce(DCS_ID,''), coalesce(MAKE,''), coalesce(MODEL,'') 
FROM dynamodb_table;

相关问题