Accesso alla shell Spark
La shell Spark è basata sul modello Scala REPL (Read-Eval-Print-Loop) e consente di creare programmi Spark in modo interattivo e di inviare lavoro al framework. Puoi accedere alla shell (interprete di comandi) Spark tramite connessione al nodo primario con SSH e richiamando spark-shell
. Per informazioni su come connettersi al nodo primario, consulta la sezione Connect to the primary node using SSH (Connessione al nodo primario tramite SSH) nella Guida per la gestione di Amazon EMR. Gli esempi seguenti utilizzano i log di accesso di Apache HTTP Server archiviati in Amazon S3.
Nota
Il bucket utilizzato in questi esempi è disponibile per i client che possono accedere alla regione Stati Uniti orientali (Virginia settentrionale).
Per impostazione predefinita, la shell Spark crea un oggetto SparkContextsc
. È possibile usare questo contesto se è obbligatorio all'interno della REPL. sqlContext è disponibile anche nella shell ed è un HiveContext
Esempio Utilizzare la shell Spark per conteggiare le occorrenze di una stringa in un file archiviato in Amazon S3
In questo esempio viene utilizzato sc
per leggere un textFile in Amazon S3.
scala> sc res0: org.apache.spark.SparkContext = org.apache.spark.SparkContext@404721db scala> val textFile = sc.textFile("s3://elasticmapreduce/samples/hive-ads/tables/impressions/dt=2009-04-13-08-05/ec2-0-51-75-39.amazon.com-2009-04-13-08-05.log")
Spark crea il textFile e la struttura di dati
scala> val linesWithCartoonNetwork = textFile.filter(line => line.contains("cartoonnetwork.com")).count() linesWithCartoonNetwork: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at filter at <console>:23 <snip> <Spark program runs> scala> linesWithCartoonNetwork res2: Long = 9
Esempio Utilizzare la shell Spark basata su Python per conteggiare le occorrenze di una stringa in un file archiviato in Amazon S3
Spark include anche una shell basata su Python, pyspark
, che puoi utilizzare per realizzare prototipi di programmi Spark scritti in Python. Come con spark-shell
, invoca pyspark
sul nodo primario. Ha inoltre lo stesso oggetto SparkContext
>>> sc <pyspark.context.SparkContext object at 0x7fe7e659fa50> >>> textfile = sc.textFile("s3://elasticmapreduce/samples/hive-ads/tables/impressions/dt=2009-04-13-08-05/ec2-0-51-75-39.amazon.com-2009-04-13-08-05.log")
Spark crea il textFile e la struttura di dati
>>> linesWithCartoonNetwork = textfile.filter(lambda line: "cartoonnetwork.com" in line).count() 15/06/04 17:12:22 INFO lzo.GPLNativeCodeLoader: Loaded native gpl library from the embedded binaries 15/06/04 17:12:22 INFO lzo.LzoCodec: Successfully loaded & initialized native-lzo library [hadoop-lzo rev EXAMPLE] 15/06/04 17:12:23 INFO fs.EmrFileSystem: Consistency disabled, using com.amazon.ws.emr.hadoop.fs.s3n.S3NativeFileSystem as filesystem implementation <snip> <Spark program continues> >>> linesWithCartoonNetwork 9