zoukankan      html  css  js  c++  java
  • Spark Scala 读取GBK文件的方法


    1. 在生产环境下,很多文件是GBK编码格式的,而SPARK 常用的textFile方法默认是写死了读UTF-8格式的文件,其他格式文件会显示乱码

    用如下代码实现读取GBK文件的方法
    
    
    import org.apache.hadoop.io.{LongWritable, Text}
    import org.apache.hadoop.mapred.TextInputFormat
    import org.apache.spark.rdd.RDD
    import org.apache.spark.{SparkConf, SparkContext}


    object GBKtoUtf8 {

    def main(args: Array[String]) {
    val sparkConf = new SparkConf().setMaster("local").setAppName("spark sql test")
    val sc = new SparkContext(sparkConf)
    //textFile 默认只支持Utf-8格式,这种方法都到的是乱码
       //这里用的是文件夹路径,也可以指定到具体文件
    sc.textFile("/Users/hduser/Downloads/gbk").foreach(println)
    //通过封装后的方法读取GBK文件,并讲每一行数据以字符串格式返回(RDD[String])
    transfer(sc,"/Users/hduser/Downloads/gbk").foreach(println)
    }

    def transfer(sc:SparkContext,path:String):RDD[String]={
    sc.hadoopFile(path,classOf[TextInputFormat],classOf[LongWritable],classOf[Text],1)
    .map(p => new String(p._2.getBytes, 0, p._2.getLength, "GBK"))
    }

    }
     
    2. 构建测试文件

    如果你用的是Mac OS,可以按照我如下步骤操作(http://www.cnblogs.com/bonnienote/p/6139545.html),打开Bash

    cd /Users/hduser/Downloads/gbk

    echo "Bonnie 大数据|学姐笔记 果果学姐" > test_utf8.txt

    转换命令

    iconv -f UTF-8 -t GBK test_utf8.txt > test_gbk.txt

    在IDEA运行上述程序,结果如下

    Bonnie ����ݣ�ѧ��ʼ� ���ѧ��
    Bonnie 大数据|学姐笔记 果果学姐

    可以看到第一次调用textFile时,显示文件为乱码
    而第二次调用GBK文件的读取方法是,显示文件正常
     
  • 相关阅读:
    【转】ListView,GridView之LayoutAnimation特殊动画的实现 ps:需要学习的是在getView中添加动画的思想
    自定义Dialog
    android 横向list特效——规格滑动
    android BaseAdapter优化
    自定义弧形进度条
    滑块闹钟界面
    HTML学习10
    HTML学习9
    HTML学习8
    HTML学习7
  • 原文地址:https://www.cnblogs.com/bonnienote/p/6139671.html
Copyright © 2011-2022 走看看