我尝试用hivecontext插入数据,如下所示:
/* table filedata
CREATE TABLE `filedata`(
`host_id` string,
`reportbatch` string,
`url` string,
`datatype` string,
`data` string,
`created_at` string,
`if_del` boolean)
* /
hiveContext.sql("insert into filedata (host_id, data) values (\"a1e1\", \"welcome\")")
错误并尝试使用“选择”:
hiveContext.sql("select \"a1e1\" as host_id, \"welcome\"as data").write.mode("append").saveAsTable("filedata")
/*
stack trace
java.lang.ArrayIndexOutOfBoundsException: 2
* /
所有列都需要这样:
hc.sql("select \"a1e1\" as host_id,
\"xx\" as reportbatch,
\"xx\" as url,
\"xx\" as datatype,
\"welcome\" as data,
\"2017\" as created_at,
1 as if_del").write.mode("append").saveAsTable("filedata")
有没有办法插入指定的列?例如,仅插入列“host\u id”和“data”。
2条答案
按热度按时间w8biq8rn1#
据我所知,配置单元不支持只在某些列中插入值
从文档中
values子句中列出的每一行都插入到表tablename中。
必须为表中的每一列提供值。尚不支持允许用户仅在某些列中插入值的标准sql语法。为了模仿标准sql,可以为用户不希望赋值的列提供null。
所以你应该试试这个:
此处引用
jv2fixgn2#
如果您使用的是行-列文件格式(如orc),则可以这样做。请参见下面的工作示例。这个例子是在Hive,但将工作得很好
HiveContext
.