Spark-处理GPS数据------记录

原始文件转CSV

1、DMP文件导入Oracle数据库

搭建好Oracle、Oracle客户端、PL/SQL,通过PL/SQL导入原始的DMP文件。

可能出现的问题:PL/SQL》Pool中没有出现对应的选项。

解决方法:先安装Office(注意Office 64位还是32位),再在PL/SQL中添加对应的驱动,然后导入数据,数据很大,需要耐心等待。

2、Oracle数据库中导出CSV文件

导出时选择CSV文件格式,注意选择空间较大的分区,避免文件较大,导致空间不足。文件较大,导出需要耐心等待。


数据去重和数据时间转换代码:

import java.text.SimpleDateFormat
import java.util.Date
import java.lang.Long
import org.apache.spark.sql.Row


import org.apache.spark.sql.SparkSession
/**
  * Created by root on 1/9/18.
  */
object Test {
  def main(args: Array[String]): Unit = {

    def  transTime(data:String):String={
      val format:String = "yyyy-MM-dd HH:mm:ss"
      val myformat = new SimpleDateFormat(format)
      val time = new Date(Long.valueOf(data)*1000L)
      myformat.format(time)
    }


    val spark = SparkSession.builder().master("spark://hadoop4:7077").appName("Test").getOrCreate()
    val data = spark.read.option("header",true).csv("hdfs://hadoop4:9000/3y.csv")

//    val spark = SparkSession.builder().master("local").appName("Test").getOrCreate()
//    val data = spark.read.option("header",true).csv("hdfs://192.168.1.201:9000/3y.csv")


    val distinctedData = data.distinct()
    val orderedData = distinctedData.orderBy("COMMADDR","UTC")
    val result = orderedData.rdd.map {
      line =>
        val time = transTime(line.get(1).toString)
        Row(line(0), time, line(2),line(3),line(4),line(5),line(6))
    }
    result.repartition(1).saveAsTextFile("hdfs://hadoop4:9000/resultone/")

  }
}



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