已知文本有三列,整理数据,并导入mysql

scala> import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.SQLContext

scala> val gitrdd=sc.textFile("/tmp/git.txt")
gitrdd: org.apache.spark.rdd.RDD[String] = /tmp/git.txt MapPartitionsRDD[1] at textFile at <console>:25

scala> gitrdd.count
res2: Long = 548

分割符空格不定

scala> gitrdd.map(_.split("   |  ")).filter(_.length<3).count
res3: Long = 8

scala> gitrdd.map(_.split("   |  ")).filter(_.length<3).collect
res1: Array[Array[String]] = Array(Array(""), Array(""), Array(" "), Array(""))

scala> val gitDF=gitrdd.map(_.split("   |  ")).filter(_.length==3).map(x=>(x(0),x(1),x(2))).toDF
gitDF: org.apache.spark.sql.DataFrame = [_1: string, _2: string ... 1 more field]

scala> gitDF.registerTempTable("tb_git")
warning: there was one deprecation warning; re-run with -deprecation for details

scala> sqlcon.sql("select * from tb_git").show
+--------------------+--------------------+----------------+
|                  _1|                  _2|              _3|
+--------------------+--------------------+----------------+
...................................................

.................................................
+--------------------+--------------------+----------------+
only showing top 20 rows

scala> val gitDF=gitrdd.map(_.split("   |  ")).filter(_.length==3).map(x=>(x(0),x(1),x(2))).toDF("name","email","else")
gitDF: org.apache.spark.sql.DataFrame = [name: string, email: string ... 1 more field]

scala> gitDF.registerTempTable("tb_git")
warning: there was one deprecation warning; re-run with -deprecation for details

scala> sqlcon.sql("select * from tb_git").show
+--------------------+--------------------+----------------+
|                name|               email|            else|
+--------------------+--------------------+----------------+
.........................
+--------------------+--------------------+----------------+
only showing top 20 rows

mysql> create table tb_git(name varchar(50),email varchar(80),else1 varchar(50));  
Query OK, 0 rows affected (0.04 sec)

scala>  import java.sql.{Connection,DriverManager, PreparedStatement,Date}
import java.sql.{Connection, DriverManager, PreparedStatement, Date}

scala>  def rddtodb(iter:Iterator[(String,String,String)]){var con:Connection=null;var ps:PreparedStatement=null;val sql="insert into tb_git(name,email,else1)values(?,?,?)" ;try{con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8", "root", "root");iter.foreach(line=>{ps=con.prepareStatement(sql);ps.setString(1,line._1.toString);ps.setString(2,line._2.toString);ps.setString(3,line._3.toString);ps.executeUpdate()}) }catch{case e:Exception=>println(e.toString)} finally{if(con!=null)con.close;if(ps!=null)ps.close}}
rddtodb: (iter: Iterator[(String, String, String)])Unit

scala> gitrdd.map(_.split("   |  ")).filter(_.length==3).map(x=>(x(0).trim,x(1).trim,x(2).trim)).foreachPartition(rddtodb)

mysql> select count(1) from tb_git;
+----------+
| count(1) |
+----------+
|      534 |
+----------+
1 row in set (0.03 sec)

spark读取文本数据测试的更多相关文章

  1. 基于 Spark 的文本情感分析

    转载自:https://www.ibm.com/developerworks/cn/cognitive/library/cc-1606-spark-seniment-analysis/index.ht ...

  2. spark读取外部配置文件的方法

    spark读取外部配置文件的方法 spark-submit  --files /tmp/fileName /tmp/test.jar 使用spark提交时使用--files参数,spark会将将本地的 ...

  3. Spark读取HDFS中的Zip文件

    1. 任务背景 近日有个项目任务,要求读取压缩在Zip中的百科HTML文件,经分析发现,提供的Zip文件有如下特点(=>指代对应解决方案): (1) 压缩为分卷文件 => 只需将解压缩在同 ...

  4. 解决Spark读取Hive分区表出现Input path does not exist的问题

    假设这里出错的表为test表. 现象 Hive读取正常,不会报错,Spark读取就会出现: org.apache.hadoop.mapred.InvalidInputException: Input ...

  5. Python读取文本,输出指定中文(字符串)

    因业务需求,需要提取文本中带有检查字样的每一行. 样本如下: 1 投入10kVB.C母分段820闭锁备自投压板 2 退出10kVB.C母分段820备投跳803压板 3 退出10kVB.C母分段820备 ...

  6. C#读取文本播放相应语音【转】

    第一种方案: 利用微软text to speech引擎(TTS),读取文本 (1)添加Microsoft Speech Object Library的项目引用 (2)引入using SpeechLib ...

  7. TEXT文本编辑框4 点击按钮读取文本框内容到内表

    *&---------------------------------------------------------------------* *& Report ZTEST_CWB ...

  8. MySQL中游标使用以及读取文本数据

    原文:MySQL中游标使用以及读取文本数据 前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试 ...

  9. [日常] Go-逐行读取文本信息

    go逐行读取文本信息:1.os包提供了操作系统函数的不依赖平台的接口,Open方法打开一个文件用于读取,func Open(name string) (file *File, err error)2. ...

随机推荐

  1. Windows Remote Shell(WinRM)使用介绍

    最近,为了实验我们安装了台Windows Server Core的服务器,没有图形界面的系统总会给人一种很完全的感觉,我们本着安全到底的想法,使用了Windows Remote Shell 的管理方式 ...

  2. NSIS 制作简单安装包

    ;replace NSIS/Contrib/zip2exe/Modern.nsh;NSI format: Asni;http://nsis.sourceforge.net/ ;UAC级别Request ...

  3. LeetCode——5.Longest Palindromic Substring

    一.题目链接:https://leetcode.com/problems/longest-palindromic-substring/ 二.题目大意: 给定一个字符串,找出它最长的回文子串.例如,字符 ...

  4. ElasticSearch - Node

    elasticSearch node 的配置如下: # Every node can be configured to allow or deny being eligible as the mast ...

  5. QHBoxLayout移除控件

    def clear_layout(widget, layout): buttons = widget.findChildren(QtGui.QPushButton) while layout.item ...

  6. Ubuntu 14.10 下Eclipse操作HBase

    环境介绍 64位Ubuntu14.10,Hadoop 2.5.0 ,HBase 0.99.0 准备环境 1 安装Hadoop 2.5.0,可参考http://www.cnblogs.com/liuch ...

  7. Levenberg-Marquardt 的 MATLAB 代码

    参考资料: 1,<精通MATLAB最优化计算(第2版)>作者:龚纯 等 的 第9章 9.3 小节 L-M 法 2,<数值分析> 作者:Timothy Sauer 的 第4章 4 ...

  8. redis集群创建

    先参考文章 https://www.cnblogs.com/PatrickLiu/p/8458788.html https://blog.csdn.net/fengshizty/article/det ...

  9. Spring之Ioc原理

    ioc 控制反转 使用的 单例模式 和 工厂模式 单例模式保证创建对象的唯一性 工厂模式实现解耦合的作用 通过dm4j类似的技术读取xml文件中bean标签的属性值,id和class 利用反射技术和c ...

  10. 第7章 网络层协议(2)_ICMP协议

    2. ICMP协议 2.1 ICMP报文(Internet Control Message Protocol)的类型 报文类型 类型值 代码 描述 请求报文 8 0 请求回显报文 响应报文 0 0 回 ...