0%

RDD是啥

Resilient Distributed Dataset (RDD),弹性分布式数据集,是对不可修改,分区的数据集合的抽象。

RDD is characterized by five main properties:

  • A list of partitions
  • A function for computing each split
  • A list of dependencies on other RDDs
  • Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
  • Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file)

基础入门

你知道的, 为了搜索…

轻量搜索

GET /megacorp/employee/_search?q=last_name:Smith

使用查询表达式搜索

GET /megacorp/employee/_search
{
"query" : {
"bool": {
"must": {
"match" : {
"last_name" : "smith"
}
},
"filter": {
"range" : {
"age" : { "gt" : 30 }
}
}
}
}
}

Summary

org.apache.spark.sql.functions是一个Object,提供了约两百多个函数。

大部分函数与Hive的差不多。

除UDF函数,均可在spark-sql中直接使用。

经过import org.apache.spark.sql.functions._ ,也可以用于Dataframe,Dataset。

简介

org.apache.spark.sql.Dataset是Spark SQL中核心的类,定义如下:

class Dataset[T] extends Serializable

DataFrame是Dataset[Row]的别名。

本文基于spark2.3.0.

下面是类方法简介。

类方法

Actions

collect(): Array[T]
返回一个数组,包含Dataset所有行的数据。
注意:所有数据会被加载进driver进程的内存。

collectAsList(): List[T]
同上,但是返回Java list。

count(): Long
数据行数

describe(cols: String*): DataFrame
计算指定列的统计指标,包括count, mean, stddev, min, and max.

head(): T
返回第一行

head(n: Int): Array[T]
返回前N

first(): T
返回第一行,是head()的别名。

foreach(f: (T) ⇒ Unit): Unit
所有元素上应用f函数

foreachPartition(f: (Iterator[T]) ⇒ Unit): Unit
所有元素分区上应用f函数

reduce(func: (T, T) ⇒ T): T
根据映射函数func,对RDD中的元素进行二元计算,返回计算结果。
注意:提供的函数应满足交换律及结合律,否则计算结果将是非确定的。

show(numRows: Int, truncate: Int, vertical: Boolean): Unit
表格形式打印出数据。numRows:显示的行数,truncate:裁剪字符串类型值到指定长度,vertical:垂直打印。

show(numRows: Int, truncate: Int): Unit
show(numRows: Int, truncate: Boolean): Unit
show(truncate: Boolean): Unit
numRows=20 truncate=20

show(numRows: Int): Unit
truncate=20

show(): Unit
numRows=20 truncate=20

summary(statistics: String*): DataFrame
计算数据集statistics指定的指标,可指定 count, mean, stddev, min, approximate quartiles (percentiles at 25%, 50%, and 75%), and max.
如未指定则会计算全部。

take(n: Int): Array[T]
获取前n行

takeAsList(n: Int): List[T]
获取前n行保存为list

toLocalIterator(): Iterator[T]
返回一个所有行的迭代器
The iterator will consume as much memory as the largest partition in this Dataset.

环境说明

客户机:Mac OS X

服务器:CentOS 6.5

客户端:OpenSSH,OS X及大多数Linux都内置了OpenSSH.’ssh -v’命令可以查看版本.

大致流程

  • 1.在客户机创建一对密钥文件,包括公钥文件(~/.ssh/id_rsa.pub),私钥文件(~/.ssh/id_rsa).

  • 2.把公钥放到服务器上(~/.ssh/authorized_keys),在使用ssh登录时,ssh程序会发送私钥去和服务器上的公钥做匹配。如果匹配成功就可以自动登录了。

初窥门径

Spark的MLlib组件内置实现了很多常见的机器学习算法,包括数据抽取,分类,聚类,关联分析,协同过滤等等.
然鹅,内置的算法并不能满足我们所有的需求,所以我们还是经常需要自定义ML算法.

MLlib提供的API分为两类:

  • 1.基于DataFrame的API,属于spark.ml包.
  • 2.基于RDD的API, 属于spark.mllib包.

应用场景

通常为了安全,服务器需要通过跳板机访问,服务器对外网暴露的端口也严格限制。这种情况下若要在本地
访问服务器上的服务或系统就会比较蛋疼。
有一个简单的解决方案,就是在本地和跳板机之间建立SSH隧道。SSH隧道提供了一个网络代理服务,
通过该代理服务可以直接访问跳板机所在的局域网,即服务器上的任意端口,服务都可以直接访问。

引言

Kafka是由LinkedIn开发的一个分布式的消息系统,它以可水平扩展和高吞吐率而被广泛使用,现在已经是Apache的项目。

Kafka系统自带了丰富的运维管理工具,都是基于命令行的,本文主要介绍一些常用的命令。

读者需要对Kafka已经有入门级的了解。

常用命令

以下命令都是在Kafka的主目录下执行的。

With spark 2.0.x,we can use DataFrameReader and DataFrameWriter.
Use SparkSession.read to access DataFrameReader and use Dataset.write to access DataFrameWriter.

Hello!

Today is this blog’s first day !

Merry Christmas !