java Spark RDD从Hive表中读取数据并保存为JavaPairRDD<String, String>

HiveContext hiveCtx = new HiveContext(jsc);

hiveCtx.sql("use xx");//xx为Hive分配给部门的权限

Dataset<Row> rows = hiveCtx.sql("select * from xx.table_name where ds = 'dd'");

JavaPairRDD<String, String> jpair = rows.javaRDD().mapPartitionsToPair(new PairFlatMapFunction<Iterator<Row>, String, String>(){
        public Iterator<Tuple2<String, String>> call(Iterator<Row> rows) throws Exception {
        List<Tuple2<String, String>> resultList=new ArrayList<Tuple2<String, String>>();
        while (rows.hasNext()) {
        try{
        Row row= rows.next();
            String lie0 = row.getString(0);
            String lie3 = row.getString(3);
                    resultList.add(new Tuple2<String, String>(lie0, lie3));  
                   
            }catch(Exception ex){ 
            resultList.add(new Tuple2<String, String>("", "")); 
            }
        }
       
        Iterator<Tuple2<String, String>> result = resultList.iterator();
return result;  
        }
        }).filter(new Function<Tuple2<String,String>, Boolean>() {
   public Boolean call(Tuple2<String, String> tuple) throws Exception {
       return tuple._2.isEmpty() ? false : true;
       }
        });



阅读更多

扫码向博主提问

青鸟飞云

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • JAVA
  • java spark
  • 前端知识
  • Spring
  • 数据库
去开通我的Chat快问
个人分类: RDD SPARK
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭