Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Tutorial: Utilice un REPL Shell con su punto de conexión de desarrollo
EnAWS Glue, puede crear un punto final de desarrollo y, a continuación, invocar un shell REPL (bucle de lectura, evaluación e impresión) para ejecutar el PySpark código de forma incremental y poder depurar de forma interactiva sus scripts de ETL antes de implementarlos.
En este tutorial se supone que ha seguido los pasos que se indican en Requisitos previos del tutorial.
En la consola de AWS Glue, seleccione Puntos de enlace de desarrollo para ir a la lista de puntos de enlace de desarrollo. Elija el nombre de un punto de enlace de desarrollo para abrir su página de detalles.
Copie el SSH to Python REPL (SSH a Python REPL) etiquetado mediante un comando SSH péguelo en un editor de texto. Este campo solo se muestra si el punto de enlace de desarrollo contiene una clave SSH pública. Reemplace el texto
por la ruta al archivo<private-key.pem>
.pem
de clave privada que se corresponde con la clave pública que usó para crear el punto de enlace de desarrollo. Utilice barras diagonales en lugar de barras diagonales inversas como delimitadores en la ruta.-
En el equipo local, abra una ventana de terminal que pueda ejecutar comandos SSH y pegue en ella el comando SSH editado. Ejecute el comando .
Suponiendo que aceptara la versión de AWS Glue predeterminada 1.0 con Python 3 para el punto de enlace de desarrollo, el resultado será similar al siguiente:
Python 3.6.8 (default, Aug 2 2019, 17:42:44) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux Type "help", "copyright", "credits" or "license" for more information. SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/usr/share/aws/glue/etl/jars/glue-assembly.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/usr/lib/spark/jars/slf4j-log4j12-1.7.16.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). 2019-09-23 22:12:23,071 WARN [Thread-5] yarn.Client (Logging.scala:logWarning(66)) - Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME. 2019-09-23 22:12:26,562 WARN [Thread-5] yarn.Client (Logging.scala:logWarning(66)) - Same name resource file:/usr/lib/spark/python/lib/pyspark.zip added multiple times to distributed cache 2019-09-23 22:12:26,580 WARN [Thread-5] yarn.Client (Logging.scala:logWarning(66)) - Same path resource file:///usr/share/aws/glue/etl/python/PyGlue.zip added multiple times to distributed cache. 2019-09-23 22:12:26,581 WARN [Thread-5] yarn.Client (Logging.scala:logWarning(66)) - Same path resource file:///usr/lib/spark/python/lib/py4j-src.zip added multiple times to distributed cache. 2019-09-23 22:12:26,581 WARN [Thread-5] yarn.Client (Logging.scala:logWarning(66)) - Same path resource file:///usr/share/aws/glue/libs/pyspark.zip added multiple times to distributed cache. Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 2.4.3 /_/ Using Python version 3.6.8 (default, Aug 2 2019 17:42:44) SparkSession available as 'spark'. >>>
Compruebe que el shell REPL funcione correctamente escribiendo la instrucción
print(spark.version)
. Mientras esto muestre la versión de Spark, su REPL estará listo para su uso.-
Ahora puede intentar ejecutar el siguiente script, que es sencillo, línea por línea, en el shell:
import sys from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.transforms import * glueContext = GlueContext(SparkContext.getOrCreate()) persons_DyF = glueContext.create_dynamic_frame.from_catalog(database="legislators", table_name="persons_json") print ("Count: ", persons_DyF.count()) persons_DyF.printSchema()