create table testdb.testtable1(
uuid string,
number int,
name string,
sex string
)distribute by hash(uuid) into 3 buckets, //利用哈希根据uuid分成三个桶
Range (number) split rows(('10001'),('10002'),('10003')) //利用number进行分区
TABLEPROPERTIES(
'storage_handler' = 'com.cloudera.kudu.hive.KuduStorageHandler',
'kudu.table_name' = 'testtable1',
'kudu.master_addresses' = 'master:7051',
'kudu.key_columns' = 'uuid' //指定主键
)
摘要: Spark SQL , Kudu
参考 https://github.com/xieenze/SparkOnKudu/blob/master/src/main/scala/com/spark/test/KuduCRUD.scala
引入 spark-core_2.11 , spark-sql_2.11 , kudu-spark2_2.11 , hadoop-client 依赖包
指定 kudu.master" , kudu.table ,如果读取超时加入 kudu.operation.timeout.ms 参数
或者
写入数据可以使用dataframe的 write 方法,也可以使用 kuduContext 的 updateRows , insertRows , upsertRows , insertIgnoreRows 方法
直接调用dataframe的write方法指定 kudu.master , kudu.table ,只支持 append 模式,对已有key的数据自动更新
调用kuduContext的 upsertRows 方法,效果和dataframe调用write append模式一样
调用kuduContext insertRows , insertIgnoreRows 方法,如果插入的数据key已存在insertRows直接报错,insertIgnoreRows忽略已存在的key,只插入不存在的key
调用kuduContext updateRows 方法,对已经存在的key数据做更新,如果key不存在直接报错
使用已有dataframe的schema建表
使用 StructType 自定义schema
删除表和判断表是否存在
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)