数据IO

作者: cotecc | 来源:发表于2017-11-30 20:53 被阅读0次

一. 多源数据 -> dataframe

1、hive table

import org.apache.spark.sql.SparkSession
import spark.implicits._    //rdds dataframe的一些隐式转换

// 声明session
val spark = SparkSession
  .builder()
  .appName("Spark SQL basic example")
  .config("spark.some.config.option", "some-value")
  .getOrCreate()

val sqlDF = spark.sql("select * from tb_userprofile limit 10  ")
sqlDF.show()

2、url上的数据

数据sample

import org.apache.commons.io.IOUtils
import java.net.URL
import java.nio.charset.Charset
import sqlContext.implicits._
import org.apache.spark.sql.functions._

val peopleRdd = sc.parallelize(
    IOUtils.toString(
        new URL("https://raw.githubusercontent.com/apache/spark/master/examples/src/main/resources/people.csv"),
        Charset.forName("utf8")).split("\n")).filter(s => !s.startsWith("name"))

val peopleDF = peopleRdd.toDF().withColumn("tmp",split($"value",";")).select(
                $"tmp".getItem(0).as("name"),
                $"tmp".getItem(1).as("age"),
                $"tmp".getItem(2).as("job")
                )
peopleDF.show()

3、json

import spark.implicits._

val peopleDF = spark.read.json("data.json")

4、csv

The steps of the csv reading:

  • 通过case class定义列名及对应类型,需要与文件中列名一致
  • 读取csv并转为dataframe
  • 通过as转为dataset
case class People (name:String, aLge:String, job:String )
val people_ds = sqlContext
  .read
  .option("header", "true")
  .option("delimiter", ",")
  .option("inferSchema", "true")
  .csv("people_data.csv")
  .as[People]

5、tsv

val chatDF = spark.read.format("csv").   // Use "csv" regardless of TSV or CSV.
                    option("header","false").     // Does the file have a header line?
                    option("delimiter","\t").       // Set delimiter to tab or comma.
                    load(path)

相关文章

  • 数据IO

    一. 多源数据 -> dataframe 1、hive table 2、url上的数据 数据sample 3、js...

  • JavaSE总结(9)IO流(1)

    一、IO流: IO流: input输入(流向内存) 读取数据 output输出(流出内存) 写出数据 IO...

  • IO多路复用

    IO模型 阻塞IO只能阻塞一个IO操作,IO复用模型能阻塞多个IO操作,所以才叫多路复用读数据: 等待数据到达 将...

  • Linux IO学习

    Linux IO模型 linux的io分为两个阶段 等待数据准备好 从内核拷贝数据到用户态 io/阶段等待数据准备...

  • java中IO流详细解释

    [TOC] IO流 IO流概述及其分类 IO概念 IO流用来处理设备之间的数据传输,Java对数据的操作是通过流的...

  • Linux IO 和 epoll

    Linux IO IO 我的理解是 IO是指内存和设备之间的数据交换,比如内存和硬盘的数据交换,内存和网卡的数据交...

  • BIO NIO AIO

    IO包括两个过程:1、发起IO请求,2、执行IO操作 IO操作有两种(读/写) 读过程,一个是等待数据的过程(数据...

  • java中的IO

    Java中的IO IO流也是种对象,Java中的一切都是对象。 IO操作的目标:从数据源中读取数据,以及将数据读写...

  • 服务器IO多路复用之select机制

    流程和原理 按照需要关心的IO事件(读IO事件、写IO事件、其它IO事件)创建IO集合;IO结合的数据类型:fd_...

  • Android-Java-I/O流概述

    IO:I:Input输入O:Output输出 IO流: IO:用于处理设备上数据的一种技术,处理设备上数据包括(I...

网友评论

      本文标题:数据IO

      本文链接:https://www.haomeiwen.com/subject/zhybbxtx.html