分享

spark 处理上千个字段数据问题

chyeers 发表于 2017-7-17 11:23:30 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 7731
数据源:一份1300个字段的数据,主键是 uid,后面是各个属性,命名是 x1,x2,x3...x1229
uid x1 x2 x3 x4 x5 x6 x7 x8 ...
1 0.11 -1 8.4 3.3 2.5 6.7 4.5 22 ...
2 0.12 4.6 -1 -1 0.4 -1 3.5 -1 ...


处理结果:想要得到,每个UID 的x1-x1299中小于0 的属性个数
uid count
1 1
24


处理设计:打算使用 spark dataframe 做的,直接 load 文件生成 dataframe,但是load 生成 dataframe 后不知道如何处理了,原因是字段数太多了,写sql也得写趴下啊。


求助各位,有什么方式实现么?

已有(8)人评论

跳转到指定楼层
nextuser 发表于 2017-7-17 11:53:49
不幸中的万幸。xi是有规律的,可以通过循环组合出sql。
例如:
select uid,y from 表
for(i=1;i++;i<=1299)
{y=y+xi ifxi<1 统计+1 else 0
}
上面只是大意,具体还需要楼主去实现。
回复

使用道具 举报

chyeers 发表于 2017-7-17 13:16:37
nextuser 发表于 2017-7-17 11:53
不幸中的万幸。xi是有规律的,可以通过循环组合出sql。
例如:
select uid,y from 表

额,拼 SQL 不是万全之策啊,要是字段名不是 规律性的,那怎么办啊。
回复

使用道具 举报

nextuser 发表于 2017-7-17 14:05:31
chyeers 发表于 2017-7-17 13:16
额,拼 SQL 不是万全之策啊,要是字段名不是 规律性的,那怎么办啊。

那没别的方法,表设计上千个字段,只能说明设计架构有问题。
回复

使用道具 举报

恋枫缩影 发表于 2017-7-18 14:21:35
真实生产环境很少有1000多个字段的表吧
回复

使用道具 举报

ledasion 发表于 2017-7-19 15:30:20
   是可以使用这个思路,进行计算

   val a = sc.textFile("", 100).map { x => (UID, x.split("").toList)}
   
    val res = a.combineByKey(
      (v: List[String]) => v,
      (c1: List[String], v: List[String]) => c1.:::(v),
       (c1: List[String], c2: List[String]) => c1.:::(c2)
    ).mapValues { x =>  x.filter { x => x.toInt < 0 }.size}
   
回复

使用道具 举报

sbrui 发表于 2017-7-19 16:58:28
解题
//用map做并行处理
//line 单行处理逻辑
Datasource.map{line=>
   val row=line
   var ListResut=List[(Int,Int)]
   var countNum=0
   for(i<- 1 until row.length-1){
     if(row.getInt(i)<0){
        countNum++
     }
     if(i=row.length-1){
       ListResut::=(row.getInt(0),countNum)
     }
   }
   ListResut
}
回复

使用道具 举报

sbrui 发表于 2017-7-19 17:02:08
其实,行转列就可以做~~
回复

使用道具 举报

chyeers 发表于 2017-7-19 17:17:47
本帖最后由 chyeers 于 2017-7-19 17:19 编辑

[mw_shl_code=python,true]import pandas as pd
train_x = pd.read_csv("../data/train_x.csv")
train_x['n_null'] = (train_x<0).sum(axis=1) #计算小于0的个数
[/mw_shl_code]


python pandas 是神器不错,但是遇到大数据量还是跑不动啊,spark 有像 pandas 一样的数据处理库么。。DataFrame 也没有这么厉害啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条