zoukankan      html  css  js  c++  java
  • Spark:java api读取hdfs目录下多个文件

    需求:

    由于一个大文件,在spark中加载性能比较差。于是把一个大文件拆分为多个小文件后上传到hdfs,然而在spark2.2下如何加载某个目录下多个文件呢?

    public class SparkJob {
        public static void main(String[] args) {
            String filePath = args[0];
            // initialize spark session
            String appName = "Streaming-MRO-Load-Multiple-CSV-Files-Test";
            SparkSession sparkSession = SparkHelper.getInstance().getAndConfigureSparkSession(appName);
    
            // reader multiple csv files.
            try {
                Dataset<Row> rows = sparkSession.read().option("delimiter", "|").option("header", false)
                        .csv(filePath).toDF(getNCellSchema());
                rows.show(10);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    
            try {
                Dataset<String> rows = sparkSession.read().textFile(filePath);
                rows.show(10);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    
            SparkHelper.getInstance().dispose();
        }
    
        private static Seq<String> getNCellSchema() {
            List<String> ncellColumns = "m_id,m_eid,m_int_id,.....";
    
            List<String> columns = new ArrayList<String>();
            for (String column : ncellColumns) {
                columns.add(column);
            }
    
            Seq<String> columnsSet = JavaConversions.asScalaBuffer(columns);
    
            return columnsSet;
        }
    }

    测试结果:

  • 相关阅读:
    CentOS7 安装 MySQL 5.7
    Centos7 安装 opencv
    nginx编译支持HTTP2.0
    CentOS 6.5 安装 ffmpeg
    parted 4T磁盘
    nginx upstream
    linux rar 解压忽略带密码压缩包
    那些实用的Nginx规则
    linux 两台服务器共享目录NFS实现
    redis集群搭建
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/9816952.html
Copyright © 2011-2022 走看看