zoukankan      html  css  js  c++  java
  • spark解决text乱码问题

    package test

    import org.apache.hadoop.io.{LongWritable, Text}
    import org.apache.hadoop.mapred.TextInputFormat
    import org.apache.spark.{SparkConf, SparkContext}
    import org.apache.spark.sql.hive.HiveContext

    /**
    * Created on 下午5:58.
    * desc: spark 解析中文文件乱码
    * @author hadoop
    */
    object testSparkEncoding {
    def main(args: Array[String]): Unit = {

    val sparkConf = new SparkConf().setMaster("local[3]").setAppName("test")
    val sc = new SparkContext(sparkConf)
    val sqlContext = new HiveContext(sc)

    //////////////////////////////////////////////////////////////////////////////////
    //
    // 使用textfile读取utf8格式的文件
    // 输出:
    // 安徽|合肥|0551
    // 江苏|南京|025
    // 浙江|杭州|0571
    //////////////////////////////////////////////////////////////////////////////////
    val fileUTF8 = "/tmp/input/city_utf8.txt"
    val rddUTF8 = sc.textFile(fileUTF8) // 读取文件
    rddUTF8.take(10).foreach(println) // 打印文件的前10行内容

    //////////////////////////////////////////////////////////////////////////////////
    //
    // 使用textfile读取GBK格式的文件
    // 输出乱码:
    // ����|�Ϸ�|0551
    // ����|�Ͼ�|025
    // �㽭|����|0571
    //////////////////////////////////////////////////////////////////////////////////
    val fileGBK1 = "/tmp/input/city_gbk.txt"
    val rddGBK1 = sc.textFile(fileGBK1) // 读取文件
    rddGBK1.take(10).foreach(println) // 打印文件的前10行内容

    //////////////////////////////////////////////////////////////////////////////////
    //
    // 读取GBK格式乱码处理
    // 输出:
    // 安徽|合肥|0551
    // 江苏|南京|025
    // 浙江|杭州|0571
    //////////////////////////////////////////////////////////////////////////////////
    val fileGBK2 = "/tmp/input/city_gbk.txt"
    val rddGBK2 = sc.hadoopFile(fileGBK2, classOf[TextInputFormat], classOf[LongWritable], classOf[Text], 1).
    map(p => new String(p._2.getBytes, 0, p._2.getLength, "GBK"))
    rddGBK2.take(10).foreach(println)
    }
    }

  • 相关阅读:
    异步编程与scrapy
    统计学 李航读书笔记
    算法模型手写
    《剑指offer》面试题的Python实现
    numpy 中文手册
    django部署
    Django ORM中使用update_or_create功能再解
    RabbitMQ(七)心跳控制 -- heartbeat
    重写__eq__函数——对象list中使用in index()——获得list中不同属性对象个数
    Python机器学习及分析工具:Scikit-learn篇
  • 原文地址:https://www.cnblogs.com/heguoxiu/p/10693941.html
Copyright © 2011-2022 走看看