1、顺序枚举使用
使用场景:
顺序取值还是很有意义的,比如枚举一城市代码BJ, WH,SH,枚举二城市名称北京,武汉,上海;我们希望枚举一取值BJ时,枚举二取值北京,而不是枚举一随机取值BJ,枚举二随机取值武汉,这样在业务上就对应乱了
处理方案:order_enum类型
比如表里面有两个字段需要一一对应,一个是城市编码,一个城市名,
city_code|||varchar|||[:order_enum(file://code.txt)]
city_name|||varchar|||[:order_enum(file://names.txt)]
其中code.txt为城市编码,names.txt为城市名,两个文件行数相同,每行内容一一对应
用order_enum按顺序取值,能确保两个字段取得城市编码和城市名一一对应
2、如何导数据到hive
(1)hive类型,hive版本支持ACID的,可以单条写入
(2)file类型,按照格式生成数据文件,然后上传文件到hdfs
datafaker file /home out.txt 10 --meta meta.txt
请仔细阅读文档其他参数和使用举例
3、关于enum类型的需求(数据从数据库中获取,待验证)
enum类型能否增加支持从数据库中取数据;例如
[:enum(mysql://root:root@123.123.1.23:3306/test:{table_name:column_name})]
[:enum(mysql://root:root@123.123.1.23:3306/test:{table_name:column_name1+'|'+column_name2})]
[:enum(mysql://root:root@123.123.1.23:3306/test:table_name:column_name1+'|'+column_name2)]
希望允许多表关联查询数据;例如
[:enum(mysql://root:root@123.123.1.23:3306/test:{table_name1:[column_name1,same_column],table_name2:[column_name2,same_column]})]
或者
[:enum(mysql://root:root@123.123.1.23:3306/test:{table_name1:[column_name1,same_column],table_name2:[column_name2,same_column]})]
甚至可以加上过滤条件
4、怎么生成一对多的数据关系
比如城市--地区
北京---地区(北京的地区随机)
前一个城市确定,然后后面的地区要是北京地区的,随机
方案:
可以将城市弄一个文件,地区弄一个文件,然后用order_enum关联,例如:
city.txt文件内容
北京
北京
北京
北京
四川
四川
四川
广东
广东
eara.txt文件内容
朝阳
昌平
海淀
大兴
成都
达州
绵阳
广州
中山
注意这两个文件相同行号中城市和地区应该对应,总行数一致