抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >
Spark RDD Feature
Spark RDD Feature

1. Spark 是什么?

Spark
Spark

SQL, Oracle, Spark

  1. Oracle == 汽车
  2. hadoop == 飞机
  3. SQL == 驾照
  4. Spark 让SQL并行运行 == SQL加速器

Spark 是计算引擎

2. Spark 执行过程

Spark
Spark

HiveOnSpark vs SparkSQL

  1. Store
  2. MR

HiveOnSpark, Hive SQL 可以用 Spark 执行引擎, 但是这样调优起来很麻烦

SparkSQL 比 Hive on Spark 好一点.

3. Spark 的起源

Spark
Spark

4. Spark 的架构图

Spark 2.x python & Java 性能 1:1

Spark
Spark

Spark DataFrame 与 pandas Dataframe 没关系,但是可以互相转换

  1. to_pandas
  2. to_spark
  1. DataSets : for Java
  2. Dataframe : for Python
  3. SQL : SQL

条条大路通罗马

Spark 适合大规模机器学习,不适合深度学习(tensorflow适合深度学习),这样理解对么?

5. RDD 的五个特性

Spark
Spark

6. Spark Api 如何使用

1
2
3
4
1. PYSPARK_PYTHON
2. JAVA_HOME
3. SPARK_HOME
4. PYLIB (os.environ["PYLIB"]=os.environ["SPARK_HOME"] + "/python/lib")

PYLIB maybe not setting

export PYSPARK_PYTHON=/Users/blair/.pyenv/versions/anaconda3/envs/spark/bin/python3
export PYSPARK_DRIVER_PYTHON=“jupyter”
export PYSPARK_DRIVER_PYTHON_OPTS=“notebook”

1
2
3
4
5
6
7
以下是 Mars 的设置 (我们直接用pyspark, 则不用直接这样显示在程序中指定):
os.environ["PYSPARK_PYTHON"]="C:/Users/netease/Anaconda3/python.exe"
os.environ["JAVA_HOME"]="C:/Program Files/Java/jdk1.8.0_144"
os.environ["SPARK_HOME"]="c:/spark"
os.environ["PYLIB"]=os.environ["SPARK_HOME"] + "/python/lib"
sys.path.insert(0,os.environ["PYLIB"] + "/py4j-0.10.7-src.zip" )
sys.path.insert(0,os.environ["PYLIB"] + "/pyspark.zip" )

7. 利用 Pyspark 完成 WordCount

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from pyspark import SparkConf , SparkContext

print(sc.version)

lines = sc.textFile("/Users/blair/ghome/github/spark3.0/pyspark/spark-src/word_count.text", 2)

lines.take(3)

words= lines.flatMap(lambda x : x.split(" "))
words.take(3)

wordCounts = words.countByValue()
for word,count in wordCounts.items():
print("{} : {}".format(word,count))

如果有3个节点, 则下列方法可以查看,数据分布在不同的 partition

1
2
3
4
def indexedFunc(parindex,pariter):
return ["partition : {} => {}".format(parindex,x) for x in pariter]

words.mapPartitionsWithIndex(indexedFunc).collect()

[‘partition : 0 => The’,
‘partition : 0 => history’,
‘partition : 0 => of’,
‘partition : 0 => New’,
‘partition : 0 => York’,
‘partition : 0 => begins’,
‘partition : 0 => around’,
‘partition : 0 => 10,000’,

查看 spark 运行状态: http://localhost:8080/

Spark
Spark

查看 spark Jobs 状态:http://localhost:4040/jobs/

Spark
Spark

知识摘要:

  1. 如果用 Hadoop Mapreduce 来完成, 则代码写起来麻烦并繁多.

  2. Spark 是 内存版的 Mapreduce, Mapreduce 可以说是所有分布式计算的鼻祖.

  3. Spark 需要做性能调优的时候,还得再看 Mapreduce 的知识来修复.

8. Spark 执行图

Spark Exec
Spark Exec

Reference

株式会社XG JAPAN 日本投资 | 过来人告诉你:日本创业移民的费用和坑