Conceptos básicos de Spark Series-Experiment 1-Spark Shell

Operación de shell de Scala, Python y R en Spark
Entorno experimental
Linux Ubuntu 16.04
Requisitos previos:

  1. Implementación del entorno de ejecución de Java completada
  2. Se implementa el entorno de ejecución del lenguaje R
  3. Se completó la implementación del modo Spark Local
    . Hemos preparado los requisitos previos anteriores para usted.

Contenido experimental
Bajo los requisitos previos anteriores, complete las operaciones de Shell de Scala, Python y R en Spark

Paso experimental
1. Haga clic en "Terminal de línea de comandos" para abrir una nueva ventana

2. Inicie Scala Shell

Scala es el idioma predeterminado de Spark. Ingrese el siguiente comando en la terminal de línea de comandos para iniciar Scala Shell

spark-shell

Después del inicio, el terminal muestra lo siguiente:

dolphin@tools:~$ spark-shell 
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/08/06 08:17:25 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Spark context Web UI available at http://172.21.0.2:4040
Spark context available as 'sc' (master = local[*], app id = local-1533543446142).
Spark session available as 'spark'.
Welcome to
____              __
/ __/__  ___ _____/ /__
_\ \/ _ \/ _ `/ __/  '_/
/___/ .__/\_,_/_/ /_/\_\   version 2.1.3
/_/
 
Using Scala version 2.11.8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_161)
Type in expressions to have them evaluated.
Type :help for more information.
 
scala>

Scala> aparece como arriba, lo que indica que ha entrado en Scala Shell

3. Utilice el shell de Scala para completar el caso de estadísticas de palabras.

Ingrese la siguiente declaración de Scala en el shell de Scala

sc.textFile("file:///home/dolphin/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("file:///home/dolphin/output")

Después de la ejecución, la pantalla es la siguiente:

scala>sc.textFile("file:///home/dolphin/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("file:///home/dolphin/output")
 
scala>

En este momento, el archivo de resultados se genera en el directorio / home / dolphin / output. Descargamos la línea de comandos de Scala e ingresamos el siguiente comando para salir de la línea de comandos de Scala

:quit

En este momento, regresé a la terminal de línea de comandos.
Ingrese el siguiente comando para ver el resultado

cat ~/output/part-*

Lo siguiente se muestra después de la ejecución, lo que indica que el caso de estadísticas de palabras está completo.

dolphin@tools:~$ cat ~/output/part-*
(are,2)
(am,1)
(how,1)
(dolphin,2)
(hello,2)
(what,1)
(now,1)
(world,1)
(you,2)
(i,1)
(words.txt,1)
(doing,1)

Descripción del código:
sc es el objeto SparkContext, que es la entrada
textFile ("file: ///home/dolphin/words.txt") del programa Spark enviado es para leer los datos localmente
flatMap ( .split ("" )) Primer mapa plano
plano ((
, 1)) para formar una tupla de palabras y 1
reduceByKey ( + ) de acuerdo con la clave para reducir, y acumular el valor
saveAsTextFile ("file: /// home / dolphin / output") para escribir el resultado en el local

4. Inicie Python Shell

Ingrese el siguiente comando en la terminal de la línea de comandos para iniciar Python Shell

pyspark

Después del inicio, la pantalla es la siguiente

dolphin@tools:~$ pyspark 
Python 2.7.12 (default, Dec  4 2017, 14:50:18) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/08/07 02:40:34 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/08/07 02:40:41 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
Welcome to
____              __
/ __/__  ___ _____/ /__
_\ \/ _ \/ _ `/ __/  '_/
/__ / .__/\_,_/_/ /_/\_\   version 2.1.3
/_/
 
Using Python version 2.7.12 (default, Dec  4 2017 14:50:18)
SparkSession available as 'spark'.
>>>

Como arriba, >>> parece indicar que ha ingresado al Python Shell
5. Un caso de uso de Spark Python para implementar el filtrado de palabras

Ejecute el siguiente código en la línea de comando de Python

lines = sc.textFile("file:///apps/spark/README.md")
pythonLines = lines.filter(lambda line: "Python" in line)
pythonLines.count()
pythonLines.collect()

Después de la ejecución, la pantalla es la siguiente:

>>>lines = sc.textFile("file:///apps/spark/README.md")
>>>pythonLines = lines.filter(lambda line: "Python" in line)
>>>pythonLines.count()
3
>>>pythonLines.collect()
[u'high-level APIs in Scala, Java, Python, and R, and an optimized engine that', u'## Interactive Python Shell', u'Alternatively, if you prefer Python, you can use the Python shell:']

Acerca de la descripción del código:
sc es el objeto SparkContext, que es la entrada para enviar el programa Spark.
TextFile ("file: ///apps/spark/README.md") es la lectura de datos en el
filtro hdfs (línea lambda: " Python "en línea) es para filtrar todas las líneas que no contienen" Python "
count () es el número de estadísticas
recopiladas () es para enumerar todos los resultados

Salga del shell de Python y ejecute el siguiente comando

exit()

6. Shell usando lenguaje R

Ingrese el siguiente comando en la terminal de la línea de comandos para iniciar R Shell

sparkR

Después de la ejecución, la pantalla es la siguiente:

dolphin@tools:~$ sparkR
 
R version 3.2.3 (2015-12-10) -- "Wooden Christmas-Tree"
Copyright (C) 2015 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu (64-bit)
 
R是自由软件,不带任何担保。
在某些条件下你可以将其自由散布。
用'license()''licence()'来看散布的详细条件。
 
R是个合作计划,有许多人为之做出了贡献.
用'contributors()'来看合作者的详细情况
用'citation()'会告诉你如何在出版物中正确地引用R或R程序包。
 
用'demo()'来看一些示范程序,用'help()'来阅读在线帮助文件,或
用'help.start()'通过HTML浏览器来看帮助文件。
用'q()'退出R.
 
Launching java with spark-submit command /apps/spark/bin/spark-submit   "sparkr-shell" /tmp/Rtmpp6WiOW/backend_port31e446162cd0
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
18/08/07 03:52:14 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
18/08/07 03:52:18 WARN ObjectStore: Failed to get database global_temp, returning NoSuchObjectException
 
Welcome to
____              __
/ __/__  ___ _____/ /__
_\ \/ _ \/ _ `/ __/  '_/
/___/ .__/\_,_/_/ /_/\_\   version  2.1.3
/_/
 
 
SparkSession available as 'spark'.
在启动过程中 - Warning messages:
1: In Filter(nzchar, unlist(strsplit(input, ",|\\s"))) :
位元組碼版本不配; 用eval
2: 程辑包‘SparkR’是用R版本3.4.4 来建造的
>

Como se muestra arriba> indica que ha ingresado el Shell del idioma R

7. Use R para manipular SparkDataFrame

Crear un SparkDataFrame

people <- read.df("/apps/spark/examples/src/main/resources/people.json", "json")

Mostrar los datos en df

head(people)

Después de la ejecución, la pantalla es la siguiente

>head(people)
age    name
1  NA Michael
2  30    Andy
3  19  Justin

Mostrar solo una columna de datos

head(select(people, "name"))

Después de la ejecución, la pantalla es la siguiente

>head(select(people, "name"))
name
1 Michael
2    Andy
3  Justin

Filtrar datos

head(filter(people, people$age >20))

Después de la ejecución, la pantalla es la siguiente

>head(filter(people, people$age >20))
age name
1  30 Andy

*至此,本次实验结束啦*

Supongo que te gusta

Origin blog.csdn.net/qq_46009608/article/details/110179004
Recomendado
Clasificación