1. //提交代码包
  2. // /usr/local/spark/bin$ spark-submit --class "getkv" /data/chun/sparktes.jar
  3.  
  4. import org.apache.spark.sql.{DataFrame, Row, SQLContext, SaveMode}
  5. import org.apache.spark.{SparkConf, SparkContext}
  6. import org.apache.spark.sql.hive.HiveContext
  7. object split {
  8. def main(args:Array[String])
  9. {
  10.  
  11. val cf = new SparkConf().setAppName("ass").setMaster("local")
  12. val sc = new SparkContext(cf)
  13. val sqlContext = new SQLContext(sc)
  14. val hc = new HiveContext(sc)
  15. val format=new java.text.SimpleDateFormat("yyyy-MM-dd")
  16. val date=format.format(new java.util.Date().getTime-****)
  17.  
  18. val lg= sc.textFile("hdfs://master:9000/data/"+date+"/*/*.gz")
  19.  
  20. val filed1=lg.map(l=>(l.split("android_id\":\"").last.split("\"").head.toString,
  21. l.split("anylst_ver\":").last.split(",").head.toString,
  22. l.split("area\":\"").last.split("\"").head,
  23. l.split("build_CPU_ABI\":\"").last.split("\"").head,
  24. l.split("build_board\":\"").last.split("\"").head,
  25. l.split("build_model\":\"").last.split("\"").head,
  26. l.split("\"city\":\"").last.split("\"").head,
  27. l.split("country\":\"").last.split("\"").head,
  28. l.split("cpuCount\":").last.split(",").head,
  29. l.split("cpuName\":\"").last.split("\"").head,
  30. l.split("custom_uuid\":\"").last.split("\"").head,
  31. l.split("cid\":\"").last.split("\"").head,
  32. l.split("definition\":\"").last.split("\"").head,
  33. l.split("firstTitle\":\"").last.split("\"").head,
  34. l.split("modeType\":\"").last.split("\"").head,
  35. l.split("pageName\":\"").last.split("\"").head,
  36. l.split("playIndex\":\"").last.split("\"").head,
  37. l.split("rectime\":").last.split(",").head,
  38. l.split("time\":\"").last.split("\"").head))
  39. //val F1=filed1.toDF("custom_uuid","region","screenHeight","screenWidth","serial_number","touchMode","umengChannel","vercode","vername","wlan0_mac","rectime","time")
  40. val scoreDataFrame1 = hc.createDataFrame(filed1).toDF("android_id","anylst_ver","area","build_CPU_ABI","build_board","build_model","city","country","cpuCount","cpuName","custom_uuid","cid","definition","firstTitle","modeType","pageName","playIndex","rectime","time")
  41. scoreDataFrame1.write.mode(SaveMode.Append).saveAsTable("test.f1")
  42.  
  43. val filed2=lg.map(l=>(l.split("custom_uuid\":\"").last.split("\"").head,
  44. l.split("playType\":\"").last.split("\"").head,
  45. l.split("prevName\":\"").last.split("\"").head,
  46. l.split("prevue\":").last.split(",").head,
  47. l.split("siteName\":\"").last.split("\"").head,
  48. l.split("title\":\"").last.split("\"").head,
  49. l.split("uuid\":\"").last.split("\"").head,
  50. l.split("vod_seek\":\"").last.split("\"").head,
  51. l.split("device_id\":\"").last.split("\"").head,
  52. l.split("device_name\":\"").last.split("\"").head,
  53. l.split("dpi\":").last.split(",").head,
  54. l.split("eth0_mac\":\"").last.split("\"").head,
  55. l.split("ip\":\"").last.split("\"").head,
  56. l.split("ipaddr\":\"").last.split("\"").head,
  57. l.split("isp\":\"").last.split("\"").head,
  58. l.split("largeMem\":").last.split(",").head,
  59. l.split("limitMem\":").last.split(",").head,
  60. l.split("packageName\":\"").last.split("\"").head,
  61. l.split("rectime\":").last.split(",").head,
  62. l.split("time\":\"").last.split("\"").head))
  63. import sqlContext.implicits._
  64. val scoreDataFrame2 = hc.createDataFrame(filed2).toDF("custom_uuid","playType","prevName","prevue","siteName","title","uuid","vod_seek","device_id","device_name","dpi","eth0_mac","ip","ipaddr","isp","largeMem","limitMem","packageName","rectime","time")
  65. scoreDataFrame2.write.mode(SaveMode.Append).saveAsTable("test.f2")
  66. //
  67.  
  68. val filed3=lg.map(l=>(l.split("custom_uuid\":\"").last.split("\"").head,
  69. l.split("region\":\"").last.split("\"").head,
  70. l.split("screenHeight\":").last.split(",").head,
  71. l.split("screenWidth\":").last.split(",").head,
  72. l.split("serial_number\":\"").last.split("\"").head,
  73. l.split("touchMode\":").last.split(",").head,
  74. l.split("umengChannel\":\"").last.split("\"").head,
  75. l.split("vercode\":").last.split(",").head,
  76. l.split("vername\":\"").last.split("\"").head,
  77. l.split("wlan0_mac\":\"").last.split("\"").head,
  78. l.split("rectime\":").last.split(",").head,
  79. l.split("time\":\"").last.split("\"").head
  80. ))
  81.  
  82. import sqlContext.implicits._
  83. val scoreDataFrame3= hc.createDataFrame(filed3).toDF("custom_uuid","region","screenHeight","screenWidth","serial_number","touchMode","umengChannel","vercode","vername","wlan0_mac","rectime","time")
  84. scoreDataFrame3.write.mode(SaveMode.Append).saveAsTable("test.f3")
  85.  
  86. }
  87. }

spark 解析非结构化数据存储至hive的scala代码的更多相关文章

  1. MySQL 5.7:非结构化数据存储的新选择

    本文转载自:http://www.innomysql.net/article/23959.html (只作转载, 不代表本站和博主同意文中观点或证实文中信息) 工作10余年,没有一个版本能像MySQL ...

  2. Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  3. Python爬虫(九)_非结构化数据与结构化数据

    爬虫的一个重要步骤就是页面解析与数据提取.更多内容请参考:Python学习指南 页面解析与数据提取 实际上爬虫一共就四个主要步骤: 定(要知道你准备在哪个范围或者网站去搜索) 爬(将所有的网站的内容全 ...

  4. 结构化数据(structured),半结构化数据(semi-structured),非结构化数据(unstructured)

    概念 结构化数据:即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据. 半结构化数据:介于完全结构化数据(如关系型数据库.面向对象数据库中的数据)和完全无结构的数据(如声音.图像文件等)之 ...

  5. 结构化数据、半结构化数据、非结构化数据——Hadoop处理非结构化数据

    刚开始接触Hadoop ,指南中说Hadoop处理非结构化数据,学习数据库的时候,老师总提结构化数据,就是一张二维表,那非结构化数据是什么呢?难道是文本那样的文件?经过上网搜索,感觉这个帖子不错 网址 ...

  6. Scrapy系列教程(2)------Item(结构化数据存储结构)

    Items 爬取的主要目标就是从非结构性的数据源提取结构性数据,比如网页. Scrapy提供 Item 类来满足这种需求. Item 对象是种简单的容器.保存了爬取到得数据. 其提供了 类似于词典(d ...

  7. hbase非结构化数据库与结构化数据库比较

    目的:了解hbase与支持海量数据查询的特性以及实现方式 传统关系型数据库特点及局限 传统数据库事务性特别强,要求数据完整性及安全性,造成系统可用性以及伸缩性大打折扣.对于高并发的访问量,数据库性能不 ...

  8. 利用Gson和SharePreference存储结构化数据

    问题的导入 Android互联网产品通常会有很多的结构化数据需要保存,比如对于登录这个流程,通常会保存诸如username.profile_pic.access_token等等之类的数据,这些数据可以 ...

  9. Spark读取结构化数据

    读取结构化数据 Spark可以从本地CSV,HDFS以及Hive读取结构化数据,直接解析为DataFrame,进行后续分析. 读取本地CSV 需要指定一些选项,比如留header,比如指定delimi ...

随机推荐

  1. 潭州课堂25班:Ph201805201 WEB 之 JS 第四课 (课堂笔记)

    JS 引入方式 在 HTML 中写入 写在 的标签里 <script> </script>推荐 放在 </body> 结束之前 <!DOCTYPE html& ...

  2. node模块包装为Promise书写法

    1. const Promise = require('bluebird') const fs = Promise.promisifyAll(Promise.promisify(require('fs ...

  3. python-memcached包使用方法

    本文转载自:http://my.oschina.net/flynewton/blog/10660 将memcached.pyc拷贝到工作目录 #!/usr/bin/env python import ...

  4. [CF920G]List Of Integers

    Description: \(t\)组询问,求第\(k\)个大于\(x\)且与\(p\)互质的数 Hint: \(x,k,p<=1e6,t<=30000\) Solution: 推出式子后 ...

  5. 如何将Object类型转换成String类型

    1. Object.toString() obj.toString() 注意:必须保证Object不是null值,否则将抛出NullPointerException异常. 2. (String)Obj ...

  6. [__NSArrayM insertObject:atIndex:]: object cannot be nil'

    错误描述:如下图 分析原因: 1.插入的对象为空了 2.[__NSSetM addObject:] object cannot be nil [__NSArrayM insertObject:atIn ...

  7. shell脚本中:1>&2 2>&1 &>filename重定向的含义和区别

    当初在shell中, 看到">&1"和">&2"始终不明白什么意思.经过在网上的搜索得以解惑.其实这是两种输出. 在 shell 程 ...

  8. libnids使用 (转)

    http://blog.csdn.net/kl222/article/details/6248827---原始链接 Libnids是一个用于网络入侵检测开发的专业编程接口,它使用了Libpcap所以它 ...

  9. 【Spark】榨干Spark性能-driver、exector内存突破256M

    榨干Spark性能-driver.exector内存突破256M spark driver memory 256m_百度搜索 Spark executor.memory - CSDN博客 sparkd ...

  10. java多线程有哪些实际的应用场景?

    多线程使用的主要目的在于: 1.吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的.简单的说,可能就是一个请求一个线程.或多个请求一个线程.如果是单线程,那同时只能处理一个用户的请求. ...