zoukankan      html  css  js  c++  java
  • 基于Spark1.3.0的Spark sql三个核心部分

    基于Spark1.3.0的Spark sql三个核心部分:

    1.可以架子啊各种结构化数据源(JSON,Hive,and Parquet)

    2.可以让你通过SQL,saprk内部程序或者外部攻击,通过标准的数据库连接(JDBC/ODBC)连接spark,比如一个商业智能的工具Tableau

    3.当你通过使用spark程序,spark sql提供丰富又智能的SQL或者regular Python/Java/Scala code,包括 join RDDS ,SQL tables ,使用SQL自定义用户函数

    以下资料参考自:http://blog.csdn.net/stark_summer/article/details/45843803

    在Spark中提供了一个JdbcRDD类,该RDD就是读取JDBC中的数据并转换成RDD,之后我们就可以

    对该RDD进行各种操作。我们先看看该类:

    JdbcRDD[T:ClassTag](sc:SparkContext,getConnection:()=>Connection,

    sql:String,lowerBound:Long,upperBound:Long,numPartitions:Int,

    mapRow:(ResultSet)=> T=JdbcRDD.resultSetToObjectArray _)

    1、getConnection 返回一个已经打开的结构化数据库连接,JdbcRDD会自动维护关闭。

    2、sql:是查询语句,次查询已经必须包含两处占位符?来作为分割数据库ResultSet的参数,

    例如:"select title,author from books where ?<=id and id<=?"

    3.lowerBound,upperBound,numPartitions:分别为第一、第二占位符,partition的个数。例如:给出lowebound 1,upperbound 20 numpartitions 2,则查询分别为(1,10,)与(11,20)

    4.mapRow是转换函数,将返回的ResultSet转换成RDD需要的单行数据,此处可以选择Array或其他,也可以是自定义的case class.默认的是讲ResultSet转换成一个Object数组。

  • 相关阅读:
    C++_重载、重写和重定义的区别
    C++静态库与动态库
    C++ 中重载运算符 “<” 及 friend属性
    C++中,关于#include<***.h>和#include"***.h"的区别
    static_cast, dynamic_cast, const_cast讨论
    浅析C++中static关键字
    C语言包含头文件时用引号和尖括号的区别
    vc实现透明位图,透明背景
    VS2008调试技巧——断点失效
    Spring解决循环依赖的理解
  • 原文地址:https://www.cnblogs.com/jingblogs/p/5531560.html
Copyright © 2011-2022 走看看