• hive案例:hive对房产数据进行过滤


    数据:

    天通苑北一区 3室2厅 510万 1.01101E+11 天通苑北一区 3-2厅 143.09 平米 南北 简装 有电梯 35642 510
    旗胜家园 2室1厅 385万 1.01101E+11 旗胜家园 2-1厅 88.68 平米 南北 简装 有电梯 43415 385
    天秀花园澄秀园 3室1厅 880万 1.01101E+11 天秀花园澄秀园 3-1厅 148.97 平米 东南北 精装 无电梯 59073 880
    西南向的两居室 高楼层电梯房 满五年 1.01101E+11 月季园 2-1厅 101.83 平米 南西 简装 有电梯 55878 569
    望京新城 3室2厅 850万 1.01101E+11 望京新城 3-2厅 142.93 平米 东南 精装 有电梯 59470 850
    翠屏北里西区 4室2厅 670万 1.01101E+11 翠屏北里西区 4-2厅 186.26 平米 南北 简装 无电梯 35972 670
    丽水嘉园 3室2厅 1000万 1.01101E+11 丽水嘉园 3-2厅 127.06 平米 西北 精装 有电梯 78703 1000
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    佰嘉城 3室2厅 478万 1.01101E+11 佰嘉城 3-2厅 121.63 平米 南北 简装 有电梯 39300 478
    模式口中里 2室1厅 290万 1.01101E+11 模式口中里 2-1厅 67.39 平米 东西 毛坯 无电梯 43034 290
    金星小区 2室1厅 290万 1.01101E+11 金星小区 2-1厅 53.31 平米 南北 简装 无电梯 54399 290
    机械研究院西区 南北三居室 此户型少出 看房方便 1.01101E+11 机械研究院西区 3-2厅 98.44 平米 南北 简装 无电梯 96506 950
    机械研究院西区 南北三居室 此户型少出 看房方便 1.01101E+11 机械研究院西区 3-2厅 98.44 平米 南北 简装 无电梯 96506 950
    南北通透 三居室 高楼层 视野很好 1.01101E+11 太阳园 3-1厅 139.63 平米 南北 简装 有电梯 103846 1450
    天通西苑二区 2室1厅 390万 1.01101E+11 天通西苑二区 2-1厅 97.12 平米 西 精装 有电梯 40157 390
    西黄新村北里 2室1厅 436万 1.01101E+11 西黄新村北里 2-1厅 92.06 平米 西南 精装 有电梯 47361 436
    翠微小学 板楼南北三居 中间楼层采光好 好户型无浪费 1.01101E+11 翠微路16号院 3-1厅 83.7 平米 南北 毛坯 无电梯 93190 780
    天通西苑二区 2室1厅 390万 1.01101E+11 天通西苑二区 2-1厅 97.12 平米 西 精装 有电梯 40157 390
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    天通苑北一区 3室2厅 510万 1.01101E+11 天通苑北一区 3-2厅 143.09 平米 南北 简装 有电梯 35642 510
    旗胜家园 2室1厅 385万 1.01101E+11 旗胜家园 2-1厅 88.68 平米 南北 简装 有电梯 43415 385
    天秀花园澄秀园 3室1厅 880万 1.01101E+11 天秀花园澄秀园 3-1厅 148.97 平米 东南北 精装 无电梯 59073 880
    西南向的两居室 高楼层电梯房 满五年 1.01101E+11 月季园 2-1厅 101.83 平米 南西 简装 有电梯 55878 569
    望京新城 3室2厅 850万 1.01101E+11 望京新城 3-2厅 142.93 平米 东南 精装 有电梯 59470 850
    翠屏北里西区 4室2厅 670万 1.01101E+11 翠屏北里西区 4-2厅 186.26 平米 南北 简装 无电梯 35972 670
    丽水嘉园 3室2厅 1000万 1.01101E+11 丽水嘉园 3-2厅 127.06 平米 西北 精装 有电梯 78703 1000
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    佰嘉城 3室2厅 478万 1.01101E+11 佰嘉城 3-2厅 121.63 平米 南北 简装 有电梯 39300 478
    模式口中里 2室1厅 290万 1.01101E+11 模式口中里 2-1厅 67.39 平米 东西 毛坯 无电梯 43034 290
    金星小区 2室1厅 290万 1.01101E+11 金星小区 2-1厅 53.31 平米 南北 简装 无电梯 54399 290
    机械研究院西区 南北三居室 此户型少出 看房方便 1.01101E+11 机械研究院西区 3-2厅 98.44 平米 南北 简装 无电梯 96506 950
    机械研究院西区 南北三居室 此户型少出 看房方便 1.01101E+11 机械研究院西区 3-2厅 98.44 平米 南北 简装 无电梯 96506 950
    南北通透 三居室 高楼层 视野很好 1.01101E+11 太阳园 3-1厅 139.63 平米 南北 简装 有电梯 103846 1450
    天通西苑二区 2室1厅 390万 1.01101E+11 天通西苑二区 2-1厅 97.12 平米 西 精装 有电梯 40157 390
    西黄新村北里 2室1厅 436万 1.01101E+11 西黄新村北里 2-1厅 92.06 平米 西南 精装 有电梯 47361 436
    翠微小学 板楼南北三居 中间楼层采光好 好户型无浪费 1.01101E+11 翠微路16号院 3-1厅 83.7 平米 南北 毛坯 无电梯 93190 780
    天通西苑二区 2室1厅 390万 1.01101E+11 天通西苑二区 2-1厅 97.12 平米 西 精装 有电梯 40157 390
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    天通苑北一区 3室2厅 510万 1.01101E+11 天通苑北一区 3-2厅 143.09 平米 南北 简装 有电梯 35642 510
    旗胜家园 2室1厅 385万 1.01101E+11 旗胜家园 2-1厅 88.68 平米 南北 简装 有电梯 43415 385
    天秀花园澄秀园 3室1厅 880万 1.01101E+11 天秀花园澄秀园 3-1厅 148.97 平米 东南北 精装 无电梯 59073 880
    西南向的两居室 高楼层电梯房 满五年 1.01101E+11 月季园 2-1厅 101.83 平米 南西 简装 有电梯 55878 569
    望京新城 3室2厅 850万 1.01101E+11 望京新城 3-2厅 142.93 平米 东南 精装 有电梯 59470 850
    翠屏北里西区 4室2厅 670万 1.01101E+11 翠屏北里西区 4-2厅 186.26 平米 南北 简装 无电梯 35972 670
    丽水嘉园 3室2厅 1000万 1.01101E+11 丽水嘉园 3-2厅 127.06 平米 西北 精装 有电梯 78703 1000
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    佰嘉城 3室2厅 478万 1.01101E+11 佰嘉城 3-2厅 121.63 平米 南北 简装 有电梯 39300 478
    模式口中里 2室1厅 290万 1.01101E+11 模式口中里 2-1厅 67.39 平米 东西 毛坯 无电梯 43034 290
    金星小区 2室1厅 290万 1.01101E+11 金星小区 2-1厅 53.31 平米 南北 简装 无电梯 54399 290
    机械研究院西区 南北三居室 此户型少出 看房方便 1.01101E+11 机械研究院西区 3-2厅 98.44 平米 南北 简装 无电梯 96506 950
    机械研究院西区 南北三居室 此户型少出 看房方便 1.01101E+11 机械研究院西区 3-2厅 98.44 平米 南北 简装 无电梯 96506 950
    南北通透 三居室 高楼层 视野很好 1.01101E+11 太阳园 3-1厅 139.63 平米 南北 简装 有电梯 103846 1450
    天通西苑二区 2室1厅 390万 1.01101E+11 天通西苑二区 2-1厅 97.12 平米 西 精装 有电梯 40157 390
    西黄新村北里 2室1厅 436万 1.01101E+11 西黄新村北里 2-1厅 92.06 平米 西南 精装 有电梯 47361 436
    翠微小学 板楼南北三居 中间楼层采光好 好户型无浪费 1.01101E+11 翠微路16号院 3-1厅 83.7 平米 南北 毛坯 无电梯 93190 780
    天通西苑二区 2室1厅 390万 1.01101E+11 天通西苑二区 2-1厅 97.12 平米 西 精装 有电梯 40157 390
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    天通苑北一区 3室2厅 510万 1.01101E+11 天通苑北一区 3-2厅 143.09 平米 南北 简装 有电梯 35642 510
    旗胜家园 2室1厅 385万 1.01101E+11 旗胜家园 2-1厅 88.68 平米 南北 简装 有电梯 43415 385
    天秀花园澄秀园 3室1厅 880万 1.01101E+11 天秀花园澄秀园 3-1厅 148.97 平米 东南北 精装 无电梯 59073 880
    西南向的两居室 高楼层电梯房 满五年 1.01101E+11 月季园 2-1厅 101.83 平米 南西 简装 有电梯 55878 569
    望京新城 3室2厅 850万 1.01101E+11 望京新城 3-2厅 142.93 平米 东南 精装 有电梯 59470 850
    翠屏北里西区 4室2厅 670万 1.01101E+11 翠屏北里西区 4-2厅 186.26 平米 南北 简装 无电梯 35972 670
    丽水嘉园 3室2厅 1000万 1.01101E+11 丽水嘉园 3-2厅 127.06 平米 西北 精装 有电梯 78703 1000
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    佰嘉城 3室2厅 478万 1.01101E+11 佰嘉城 3-2厅 121.63 平米 南北 简装 有电梯 39300 478
    模式口中里 2室1厅 290万 1.01101E+11 模式口中里 2-1厅 67.39 平米 东西 毛坯 无电梯 43034 290
    金星小区 2室1厅 290万 1.01101E+11 金星小区 2-1厅 53.31 平米 南北 简装 无电梯 54399 290
    机械研究院西区 南北三居室 此户型少出 看房方便 1.01101E+11 机械研究院西区 3-2厅 98.44 平米 南北 简装 无电梯 96506 950
    机械研究院西区 南北三居室 此户型少出 看房方便 1.01101E+11 机械研究院西区 3-2厅 98.44 平米 南北 简装 无电梯 96506 950
    南北通透 三居室 高楼层 视野很好 1.01101E+11 太阳园 3-1厅 139.63 平米 南北 简装 有电梯 103846 1450
    天通西苑二区 2室1厅 390万 1.01101E+11 天通西苑二区 2-1厅 97.12 平米 西 精装 有电梯 40157 390
    西黄新村北里 2室1厅 436万 1.01101E+11 西黄新村北里 2-1厅 92.06 平米 西南 精装 有电梯 47361 436
    翠微小学 板楼南北三居 中间楼层采光好 好户型无浪费 1.01101E+11 翠微路16号院 3-1厅 83.7 平米 南北 毛坯 无电梯 93190 780
    天通西苑二区 2室1厅 390万 1.01101E+11 天通西苑二区 2-1厅 97.12 平米 西 精装 有电梯 40157 390
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800
    绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年 1.01101E+11 绿荫芳邻 2-2厅 133.76 平米 南北 精装 有电梯 59809 800

    要求:

    某房地产元数据清洗。清洗规则如下:(列数从第0列开始)
    1、首先统计整条房屋信息发布次数
    2、过滤,整行数据完全相同的只留一行即可。
    3、第1列数据某些字段需要加"[]"(自己结合分析前后观察规律)。
    4、第2列数据不需要。
    5、将第4列中的"-"替换成"室"。
    6、将第5列数据中的空格去掉。
    7、将6、7、8列改成如下格式。
    8、将10列数据中值小于300的排除掉整行数据,并将剩下的第10列数据后面加上单位"万"。(15分)
    9、清洗完后的第1列和第2列用Tab键分隔,第2、3、4、5、6、7列分别用空格分隔。
    10、全部按规则输出,并且输出文件中第一行是抬头。

    房名 区域 户型 面积 朝向-装修-电梯 单价 总价 发布次数

    结果样式:

    hive思路:

    天通苑北一区 3室2厅 510万 1.01101E+11 天通苑北一区 3-2厅 143.09 平米 南北 简装 有电梯 35642 510
    实际开发中拿到的字段都是整行的,设置一个字段
    create external table if not exists data(
    logs String
    )
    //row format delimited fields terminated by ' ' ,不用拆分,只有一个字段,设置文件所在位置即可。
    //stored as textfile;

    create external table if not exists data(
    logs String
    )
    location '/house';

    hadoop fs -mkdir /house;

    使用字符串,table键,空格时需要使用双引号,内置函数里使用单引号
    拆分后的
    第一列 天通苑北一区 3室2厅 510万
    按' '拆分,使用split函数,第一列为拆分后的第0个角标元素
    split(logs," ")[0]

    split(logs,' ')[0]
    第一列以空格拆分,拆分成三个元素 天通苑北一区 3室2厅 510万
    第一个元素
    split(split(logs," ")[0],' ')[0]

    split(split(logs,' ')[0],' ')[0]
    由于某些第一列拆分后只有一个元素 绿荫芳邻二居客厅朝南主卧室朝南小卧室朝北满五年
    使用if函数进行判断,如果角标为1,2的元素为null,则赋值空字符串,否则是它本身
    if(split(split(logs," ")[0],' ')[1] is null,"",split(split(logs," ")[0],' ')[1])

    if(split(split(logs,' ')[0],' ')[1] is null,"",split(split(logs,' ')[0],' ')[1])
    合并:将以空格拆分后的三个元素连接起来,使用concat函数
    拆分后的第一列
    select concat(split(split(logs," ")[0],' ')[0]," [",if(split(split(logs," ")[0],' ')[1] is null,"",split(split(logs," ")[0],' ')[1])," ",
    if(split(split(logs," ")[0],' ')[2] is null,"",split(split(logs," ")[0],' ')[2]),"] ") from data;

    select concat(split(split(logs," ")[0],' ')[0]," [",if(split(split(logs," ")[0],' ')[1] is null,"",split(split(logs," ")[0],' ')[1])," ",
    if(split(split(logs," ")[0],' ')[2] is null,"",split(split(logs," ")[0],' ')[2]),"] ") from data;
    第三列:天通苑北一区 ,以' '拆分得到,题目要求第二列与第三列之间以空格分隔,则在第二列后加空格
    split(logs,' ')[2]拆分后的第三列
    select concat(split(logs," ")[2]," ") from data;

    select concat(split(logs,' ')[2],' ') from data;
    第四列:3-2厅,将- 替换成室,使用regexp_replace正则替换函数,并在之后加空格,与下一列用空格分隔。
    select concat(regexp_replace(split(logs," ")[3],"-","s")," ") from data;

    regexp_replace(split(logs,' ')[3],'-','室')
    select concat(regexp_replace(split(logs,' ')[3],'-','室'),' ') from data;
    第五列:143.09 平米,去掉空格,使用regexp_replace正则替换函数,
    select concat(regexp_replace(split(logs," ")[4]," ","")," ") from data;

    regexp_replace(split(logs,' ')[4],' ','');
    在该列后加空格,使用concat连接函数
    select concat(regexp_replace(split(logs,' ')[4],' ',''),' ') from data;
    第六列 南北 简装 有电梯,使用-连接,并在之后加空格
    使用concat,不使用concat

    select concat(split(logs,' ')[5],'-',split(logs,' ')[6],'-',split(logs,' ')[7],'-',' ') from data;
    第九列 35642
    select concat(split(logs," ")[8],' ') from data;

    select concat(split(logs,' ')[8],' ') from data;
    第10列 510 ,将10列数据中值小于300的排除掉整行数据,并将剩下的第10列数据后面加上单位"万"。
    select concat(split(logs," ")[9],"wan ") from data where split(logs," ")[9]>=300;

    select concat(split(logs,' ')[9],'万',' ') from data where split(logs,' ')[9]>300;

    //设置表头命令:set hive.cli.print.header=true; //设置显示字段名

    set hive.cli.print.current.db=true;设置显示使用的数据库
    set hive.cli.print.header=true;设置显示字段名

    select concat(split(split(logs," ")[0],' ')[0]," [",if(split(split(logs," ")[0],' ')[1] is null,"",split(split(logs," ")[0],' ')[1])," ",if(split(split(logs," ")[0],' ')[2] is null,"",split(split(logs," ")[0],' ')[2]),"] ") as `房名`,
    concat(split(logs," ")[2]," ") as `区域`,
    concat(regexp_replace(split(logs," ")[3],"-","s")," ") as `户型`,
    concat(regexp_replace(split(logs," ")[4]," ","")," ") as `面积`,
    concat(concat_ws("-",split(logs," ")[5],split(logs," ")[6],split(logs," ")[7])," ") as `朝向-装修-电梯`,
    concat(split(logs," ")[8]," ") as `单价`,
    concat(split(logs," ")[9],"wan ") as `总价`,
    from data where split(logs," ")[9]>300;
    count(logs) as `发布次数`

    select concat(split(logs,' ')[0]," [",if((split(split(logs,' ')[0]),' ')[1] is null,'',split((split(logs,' ')[0]),' ')[1]),
    if(split(split(logs,' ')[0],' ')[2] is null,"",split(split(logs,' ')[0],' ')[2]),"] ") as '房名',
    concat(split(logs,' ')[2],' ') as '区域',
    concat(regexp_replace(split(logs,' ')[3],'-','室'),' ') as '户型',
    concat(regexp_replace(split(logs,' ')[4],' ',''),' ') as '面积',
    concat(split(logs,' ')[5],'-',split(logs,' ')[6],'-',split(logs,' ')[7],'-',' ') as '朝向-装修-电梯',
    concat(split(logs,' ')[8],' ') as '单价',
    concat(split(logs,' ')[9],'万',' ') as '总价',
    count(*) as '发布次数' from data group by logs having split(logs," ")[9]>=300;


    select concat(split(split(logs," ")[0],' ')[0]," [",if(split(split(logs," ")[0],' ')[1] is null,"",split(split(logs," ")[0],' ')[1])," ",if(split(split(logs," ")[0],' ')[2] is null,"",split(split(logs," ")[0],' ')[2]),"] ") as `房名`,
    concat(split(logs," ")[2]," ") as `区域`,
    concat(regexp_replace(split(logs," ")[3],"-","s")," ") as `户型`,
    concat(regexp_replace(split(logs," ")[4]," ","")," ") as `面积`,
    concat(concat_ws("-",split(logs," ")[5],split(logs," ")[6],split(logs," ")[7])," ") as `朝向-装修-电梯`,
    concat(split(logs," ")[8]," ") as `单价`,
    concat(split(logs," ")[9],"wan ") as `总价`,
    count(logs) as `发布次数`
    from data group by logs having split(logs," ")[9]>=300;

    成就人
  • 相关阅读:
    windows代码,传入文件名,遍历此目录下所有文件.
    windows,分割路径.得出目录
    windows代码,路径分割
    windows下,读取快捷方式lnk所指向的路径
    【Unity】3.2 利用预设(Prefab)制作可复用的组件
    【Unity】3.1 利用内置的3D对象创建三维模型
    【Unity】3.0 第3章 创建和导入3D模型
    【Unity】2.11 了解游戏有哪些分类对你开阔思路有好处
    【Unity】2.10 利用VS2015编辑Unity的C#脚本
    【Unity】2.9 光源(Lights)
  • 原文地址:https://www.cnblogs.com/pingzizhuanshu/p/9074793.html
Copyright © 2020-2023  润新知