没有合适的资源?快使用搜索试试~ 我知道了~
roohom#Code-Cookbook#[Kudu]关于Kudu Upsert列的问题1
需积分: 0 0 下载量 126 浏览量
2022-07-25
14:34:57
上传
评论
收藏 6KB MD 举报
温馨提示
1、原先数据为: 2、我使用如下语句upsert 3、使用如下代码插入数据 4、接着尝试,这次将AS etl_time加上
资源推荐
资源详情
资源评论
# [Kudu]关于Kudu Upsert列的问题
今天做线索下发,涉及到spark修改kudu列的数据,发现了一个问题,kudu表中的数据始终没有被修改,于是晚间我在本地尝试着复现了一波,发现了一些问题,记录于此,明天去测试环境再测试一下。
> 补充:经过在测试环境的尝试(测试的集群环境的Kudu版本为1.9, 本地测试使用的是Kudu1.13的依赖包),情况相同。
## 需求起源
场景是这样的,需求是原先存在于kudu表中的数据,有一列为主键,当该列的数据发生更新之后,直接将该条数据upsert。
## 复现
### 建表
我在本地使用impala建了一个表,名为upsert_kudu_test
~~~sql
CREATE TABLE upsert_kudu_test(
id int,
name string,
etl_time TIMESTAMP,
PRIMARY KEY (id)
)
STORED AS kudu;
~~~
在kudu中其实际名为:impala::test.upsert_kudu_test
### 插入数据
使用impala可以直接插入数据
~~~sql
INSERT INTO test.upsert_kudu_test VALUES(1, 'aaa',NOW());
~~~
没有问题,impala可以直接查询出来
![111](KuduUpsertProblem.assets/image-20210721234205692.png)
可是,实际情况是,任务是使用Spark在集群环境中跑的,对于kudu中列数据的插入和修改都是通过spark来完成的,于是,我模拟在本地使用spark来插入和修改改表的数据,代码如下:
~~~java
SparkSession spark = SparkSession.builder()
.master("local[4]")
.appName("UpsertKuduRows")
.getOrCreate();
KuduContext kuduContext = new KuduContext("cdh001:7051", spark.sparkContext());
KuduWriteOptions kuduWriteOptions = new KuduWriteOptions(false, false, false, false, false);
//插入
Dataset df = spark.sql("select 2 AS id, 'ggg' AS name
点击阅读更多
资源评论
小埋妹妹
- 粉丝: 29
- 资源: 343
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功