Accesso alla shell Spark - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Accesso alla shell Spark

La shell Spark è basata su 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 alla 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 il proprio SparkContextoggetto chiamatosc. È possibile utilizzare questo contesto se è richiesto all'interno del 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 file di testo archiviato 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 associata. Successivamente, l'esempio conteggia il numero di righe nel file di log con la stringa "cartoonnetwork.com":

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. Proprio come conspark-shell, invoca pyspark sul nodo primario; anche questo ha lo stesso SparkContextoggetto.

>>> 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 associata. Successivamente, l'esempio conteggia il numero di righe nel file di log con la stringa "cartoonnetwork.com".

>>> 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