Trabajo con bloc de notas

Oracle Big Data Service utiliza la aplicación de bloc de notas Big Data Studio como su interfaz de blocs de notas y entorno de codificación.

Creación de un bloc de notas

Para crear un bloc de notas:
  1. Acceda a la aplicación de bloc de notas. Consulte Acceso a Big Data Studio.
  2. Haga clic en el icono de los blocs de notas en la parte izquierda.
  3. Haga clic en Crear o Crear bloc de notas y especifique lo siguiente:
    • Nombre: nombre del bloc de notas.

    • Descripción: descripción del bloc de notas.

    • Etiquetas: palabras clave para el bloc de notas. Estas palabras clave actúan como etiquetas de búsqueda al buscar el bloc de notas. También puede agregar etiquetas más tarde modificando el bloc de notas.

    • Tipo: seleccione el tipo de bloc de notas. Las opciones son:

      • Por defecto: aplica el aspecto de Zeppelin, donde los párrafos se pueden cambiar de tamaño y colocar uno al lado del otro.
      • Jupyter: aplica el aspecto de Jupyter, donde los párrafos se muestran en una sola columna.
  4. Haga clic en Crear.

Puede realizar muchas acciones en un bloc de notas. Para obtener información sobre algunas de ellas, consulte Visión general de la interfaz de usuario de los blocs de notas.

Después de crear un bloc de notas, puede crear párrafos en el mismo. Consulte Creación de párrafos.

Visión general de la interfaz de usuario de los blocs de notas

A continuación, se muestran algunos de los elementos de pantalla más comunes que verá al trabajar en un bloc de notas. Mueva el ratón sobre los iconos de la interfaz de usuario para ver sus funciones.

Icono Descripción

Modificar bloc de notas

Modifica los detalles de un bloc de notas, como el nombre, la descripción y las etiquetas.

Ejecutar párrafos

Ejecuta todos los párrafos de un bloc de notas en orden secuencial.

Invalidar sesión

Restablece cualquier conexión o código que se ejecute en un bloc de notas.

Suprimir bloc de notas

Suprime un bloc de notas.

Ocultar/mostrar código

Oculta o muestra la sección de código de todos los párrafos de un bloc de notas.

Ocultar/mostrar resultado

Oculta o muestra la sección de resultados de todos los párrafos de un bloc de notas.

Solo lectura/escritura

Establece el bloc de notas en el modo de solo lectura o escritura.

Ocultar/mostrar panel

Muestra u oculta los comandos de la barra de configuración de párrafo, la barra de herramientas de resultados y el cuadro de diálogo de configuración de un párrafo seleccionado en un panel situado a la derecha del bloc de notas.

Control de versiones

Crea una versión de un bloc de notas o muestra las versiones.

Borrar resultado

Borra los resultados de todos los párrafos de un bloc de notas.

Borrar dependencias de párrafo

Elimina todas las dependencias de párrafo definidas.

Abrir como Iframe

Abre un bloc de notas en un Iframe. Esto permite incrustar un bloc de notas en otra página web.

Compartir bloc de notas

Comparte un bloc de notas.

Clonar bloc de notas

Crea una copia de un bloc de notas.

Exportar bloc de notas

Exporta un bloc de notas a su computadora como archivo .dnsb.

Zeppelin/Jupyter

Define el diseño preferido de un bloc de notas (formato de diseño Zeppelin o Jupyter).

Plantilla por defecto/otra plantilla

Aplica el aspecto general del bloc de notas utilizando la plantilla por defecto u otra plantilla.

Importar bloc de notas

Puede importar blocs de notas desde su computadora local a la aplicación de bloc de notas Big Data Studio. Esto incluye los blocs de notas Jupyter.

Para importar un bloc de notas:
  1. Acceda a la aplicación de bloc de notas. Consulte Acceso a Big Data Studio.
  2. En la página Blocs de notas, haga clic en el icono Importar blocs de notas en la parte superior derecha.
  3. Arrastre y suelte o busque el bloc de notas que desea importar. Las extensiones de archivo válidas son .json, .dsnb y .ipynb.
  4. Haga clic en Importar

Clonación de un bloc de notas

Al clonar un bloc de notas, se hace una copia del mismo.

Para clonar un bloc de notas:
  1. Acceda a la aplicación de bloc de notas. Consulte Acceso a Big Data Studio.
  2. En la página Blocs de notas, abra el bloc de notas que desea clonar.
  3. Haga clic en el icono Clonar bloc de notas y haga la copia.

    A menos que se cambie, el bloc de notas clonado tendrá el nombre Copia de nombre actual del bloc de notas.

  4. Si la copia es de solo lectura y desea ejecutarla o cambiarla, haga clic en el icono de bloqueo situado en la parte superior derecha del bloc de notas abierto para desbloquearla.

Intérpretes soportados

La aplicación de bloc de notas Big Data Studio proporciona intérpretes que ejecutan código en diferentes idiomas. Se soportan los intérpretes que se muestran a continuación.

Cada intérprete tiene un conjunto de propiedades que un administrador puede personalizar y aplicar en todos los blocs de notas. Consulte Configuración de intérpretes.

Inicie un párrafo con %intérprete como se muestra a continuación y, a continuación, codifique el párrafo con la sintaxis correspondiente.

Nota

Los intérpretes de Spark y PySpark soportan el modo cliente de YARN. La ejecución de los intérpretes en modo cliente de YARN implica que Big Data Studio inicia un controlador de Spark y los comandos de la aplicación Spark se envían a los gestores de nodos de YARN para que los ejecuten. De esta manera, YARN gestiona la memoria en lugar del nodo del cluster.
Tipo Intérprete Uso

graalvm

oracle.datastudio.interpreter.graalvm.GraalVMInterpreter

Especifique el tipo de lenguaje como se muestra a continuación y utilice la sintaxis de dicho lenguaje.

%python-graalvm
%js-graalvm
%java-graalvm
%ruby-graalvm

jdbc

(por defecto)

org.apache.zeppelin.jdbc.JDBCInterpreter

%jdbc

Los valores de la base de datos se deben configurar correctamente. Los administradores deben visitar Intérpretes > jdbc > jdbc (por defecto) en la interfaz de usuario web de Big Data Studio y verificar o configurar los siguientes valores:

  • default.url: cadena de conexión de base de datos

  • default user: usuario con permiso para conectarse a la base de datos

  • default password: contraseña de la base de batos

jdbc

(Cloud SQL)

org.apache.zeppelin.jdbc.JDBCInterpreter

%jdbc.cloudsql

Para utilizar este intérprete, debe agregar Cloud SQL al cluster. Consulte Adición de Cloud SQL. Cloud SQL permite utilizar SQL para consultar los orígenes de datos de Big Data. Consulte Uso de Cloud SQL con Big Data.

Los administradores también deben cambiar la contraseña por defecto que se utiliza con el intérprete:

  1. Conéctese al nodo del servidor de consultas con el usuario root y ejecute lo siguiente:
    # su - oracle
    sqlplus / as sysdba
    sql> alter session set container=bdsqlusr;
    sql> alter user datastudio_user identified by "new_password";
    Esto define la nueva contraseña. Si desea crear un superusuario (opcional), utilice lo siguiente:
    # su - oracle
    sqlplus / as sysdba
    sql> alter session set container=bdsqlusr;
    sql> create user new_user_name identified by "new_password";
    sql> GRANT ALL PRIVILEGES TO new_user_name;
  2. Vaya a Intérpretes > jdbc > jdbc.cloudsql en la interfaz de usuario web de Big Data Studio, introduzca la nueva contraseña en el campo default.password y haga clic en Actualizar. Si ha creado un superusuario, debe actualizar el campo default.user. Si no se ha agregado Cloud SQL al cluster, no verá el separador jdbc.cloudsql.

jdbc

(Hive)

org.apache.zeppelin.jdbc.JDBCInterpreter

%jdbc.hive

En los clusters no seguros, no es necesario realizar ninguna configuración adicional.

En los clusters seguros, se debe agregar el usuario datastudio al grupo que tiene permisos para escribir en la base de datos. Para obtener más información, consulte Otorgamiento de acceso a tablas de Hive.

md (markdown)

oracle.datastudio.markdown.MarkdownInterpreter

%md

pyspark

org.apache.zeppelin.spark.PySparkInterpreter

%pyspark

python

oracle.datastudio.python.DsPythonInterpreter

%python

Los administradores del cluster pueden instalar otros paquetes de Python en el host del cluster. Utilice SSH para conectarse al cluster y, a continuación, utilice pip para instalar paquetes de Python.

Cuando se instalan paquetes y las nuevas bibliotecas se encuentran en una de las siguientes ubicaciones, dichas bibliotecas estarán disponibles para la ruta de búsqueda del módulo del intérprete de Python en el bloc de notas.

/usr/bin
/usr/lib
/usr/lib64

rserveinterpreter

com.oracle.oml.interpreter.plainrinterpreter.PlainRInterpreter

%r y, a continuación, sintaxis de R

Los administradores del cluster pueden instalar otros paquetes de R en el host del cluster. Utilice SSH para conectarse al cluster y, a continuación, utilice R CMD o R install.packages para instalar paquetes de R:

R CMD [options] package_name.tar.gz
R install.packages(url_for_packages, NULL)

Cuando se instalan paquetes, las nuevas bibliotecas se encuentran en /usr/lib64/R/. Las bibliotecas de este directorio se agregan al intérprete de R. Las bibliotecas de otros directorios no están disponibles en la aplicación de bloc de notas.

spark

org.apache.zeppelin.spark.SparkInterpreter

%spark

Creación de párrafos

Los párrafos se utilizan en los blocs de notas para explorar interactivamente los datos. Los párrafos contienen código ejecutable que devuelve resultados en muchos formatos diferentes.

Puede utilizar diferentes intérpretes en el mismo bloc de notas. Los ajustes de los intérpretes los puede configurar un administrador. Consulte Configuración de intérpretes.

Para crear un párrafo:

  1. Acceda a la aplicación de bloc de notas. Consulte Acceso a Big Data Studio.
  2. En la página Blocs de notas, abra el bloc de notas en el que desee agregar párrafos (o cree un bloc de notas nuevo).
  3. Pase el ratón por encima o por debajo de un párrafo para mostrar la barra de herramientas de intérpretes:

    La barra de herramientas de intérprete se muestra como una barra de navegación con 12 círculos. Cada círculo contiene un icono. Por ejemplo, un signo más. El resto de las imágenes no están claras.

  4. Haga clic en un icono de la barra de herramientas para seleccionar un intérprete y agregue un nuevo párrafo que utilice ese intérprete. Al hacer clic en algunos de los iconos, el párrafo que se crea incluye código de ejemplo que puede ejecutar.

    No se proporcionan iconos para todos los intérpretes. Para los intérpretes para los que no hay iconos, haga clic en el signo más (+) e inicie el párrafo con %intérprete. Por ejemplo, para Spark, haga clic en + en la barra de herramientas e inicie el párrafo con %spark. Para obtener una lista de los intérpretes soportados, consulte Intérpretes soportados.

  5. Codifique el párrafo como desee. Los cambios se guardan automáticamente.

Para obtener información sobre algunas de las acciones que puede realizar en los párrafos, consulte Visión general de la interfaz de usuario de los párrafos.

Visión general de la interfaz de usuario de los párrafos

A continuación, se muestran algunos de los elementos de pantalla más comunes que verá al trabajar con párrafos. Mueva el ratón sobre los iconos de la interfaz de usuario para ver sus funciones.

Icono Descripción

Ejecutar párrafo

Ejecuta el código o la consulta de un párrafo.

Acceder al modo de dependencias

Agrega o suprime párrafos dependientes.

Comentarios

Agrega comentarios a un párrafo.

Ampliar/reducir

Amplía un párrafo y lo muestra en modo de pantalla completa o reduce la vista.

Mostrar/ocultar números de línea

Muestra u oculta los números de línea en el código de un párrafo (solo se aplica a la sección de código).

Visibilidad

Gestiona la configuración de visibilidad de un párrafo. Esto controla cómo el autor y otros usuarios que tienen acceso al bloc de notas pueden ver un párrafo.

Configuración

Proporciona una serie de acciones. Utilícelo para:
  • Mover un párrafo hacia arriba o hacia abajo

  • Borrar el resultado del párrafo

  • Abrir un párrafo como un Iframe

  • Clonar un párrafo

  • Suprimir un párrafo

Acceso a HDFS desde Spark y PySpark

Para acceder a HDFS en un bloc de notas y leer y escribir en HDFS, debe otorgar acceso a sus carpetas y archivos al usuario con el que la aplicación de bloc de notas Big Data Studio accederá a HDFS.

Cuando Big Data Studio accede a HDFS (y otros servicios de cluster de Hadoop), se utilizan estos usuarios:

  • interpreteruser es el usuario y el grupo que se utilizan con los clusters no seguros.

  • datastudio es el usuario y el grupo que se utilizan con los clusters seguros (habilitados para Kerberos).

Tenga en cuenta que estos usuarios no son los que se utilizan para acceder a la interfaz de usuario web de Big Data Studio.

En un cluster seguro, debe obtener un ticket de Kerberos para el usuario antes de ejecutar cualquier comando hdfs. Por ejemplo, para ejecutar el comando kinit oracle para el usuario oracle.

Otorgamiento de acceso a carpetas de HDFS

Puede otorgar acceso de lectura y escritura a carpetas de HDFS. También puede eliminar ese acceso.

Para otorgar acceso a carpetas de HDFS:
  1. Cree un directorio de HDFS al que desee proporcionar acceso si aún no tiene uno. En este ejemplo, el directorio es /user/oracle/test.
    hdfs dfs -mkdir /user/oracle/test
  2. Proporcione acceso a través de las ACL de HDFS.
    1. Compruebe el acceso de ACL actual. Por ejemplo:
      hdfs dfs -getfacl /user/oracle/test

      Verá algo similar a lo siguiente:

      # file: /user/oracle/test
      # owner: oracle
      # group: oracle
      user:rwx
      group:r-x
      other:r-x
    2. Haga que el grupo pueda leer los archivos y subdirectorios del directorio:
      • Para clusters no seguros, defina los permisos para el grupo interpreteruser. Por ejemplo:

        hdfs dfs -setfacl -m group:interpreteruser:rwx /user/oracle/test
      • Para clusters seguros, defina los permisos para el grupo datastudio. Por ejemplo:

        hdfs dfs -setfacl -m group:datastudio:rwx /user/oracle/test
    3. Defina el valor de ACL por defecto para el directorio principal:
      • Para clusters no seguros, defina los permisos por defecto para el grupo interpreteruser. Por ejemplo:

        hdfs dfs -setfacl -m default:group:interpreteruser:rwx /user/oracle/test
      • Para clusters seguros, defina los permisos por defecto para el grupo datastudio. Por ejemplo:

        hdfs dfs -setfacl -m default:group:datastudio:rwx /user/oracle/test
    4. Agregue los permisos correctos para el usuario. También puede eliminar el acceso que ya se ha otorgado. Por ejemplo:
      • Defina el permiso read

        • Clusters no seguros:

          hdfs dfs -setfacl -m user:interpreteruser:r-x /user/oracle/test
        • Clusters seguros:

          hdfs dfs -setfacl -m user:datastudio:r-x /user/oracle/test
      • Defina el permiso write

        • Clusters no seguros:

          hdfs dfs -setfacl -m user:interpreteruser:rwx /user/oracle/test
        • Clusters seguros:

          hdfs dfs -setfacl -m user:datastudio:rwx /user/oracle/test
      • Elimine el acceso

        • Clusters no seguros:

          hdfs dfs -setfacl -m user:interpreteruser:--- /user/oracle/test
        • Clusters seguros:

          hdfs dfs -setfacl -m user:datastudio:--- /user/oracle/test
  3. Compruebe el acceso de ACL actual. Por ejemplo:
    hdfs dfs -getfacl /user/oracle/test
    # file: /user/oracle/test
    # owner: oracle
    # group: oracle

    Verá algo similar a lo siguiente. En este ejemplo, se muestran los permisos para interpreteruser.

    user:rwx
    user:interpreteruser:r-x  
    group:r-x
    group:interpreteruser:rwx
    mask:rwx
    other:r-x
    default:user:rwx
    default:group:r-x
    default:group:interpreteruser:rwx
    default:mask:rwx
    default:other:r-x
  4. Pruebe la configuración ejecutando el siguiente script en un bloc de notas. En este ejemplo, se utiliza Spark. Ahora debería poder leer y escribir en HDFS.
    %spark
        import scala.sys.process.Process
        import org.apache.spark.SparkConf
        import org.apache.hadoop.fs.{FileSystem, Path}
    
        //Get the Name Node Service
        val df_name_xml = Process(Seq("bash", "-c", "grep -A1  -- dfs.nameservices  /etc/hadoop/conf/hdfs-site.xml  | grep -v dfs ") ).lineStream.mkString
        var df_name = df_name_xml.trim.replaceAll("<value>|</value>", "")
        println (df_name)
    
        val fs = FileSystem.get(spark.sparkContext.hadoopConfiguration)
    
        var namenode=df_name //NameNode Nameservice
        var testfile="test.csv"
        var dir = "/user/oracle/test"
    
        val rdd = sc.parallelize(List(
            (0, 60),
            (0, 56),
            (0, 54),
            (0, 62),
            (0, 61),
            (0, 53),
            (0, 55),
            (0, 62),
            (0, 64),
            (1, 73),
            (1, 78),
            (1, 67),
            (1, 68),
            (1, 78)
        ))
    
        rdd.saveAsTextFile(s"hdfs://$namenode:8020$dir/$testfile")
        var input = sc.textFile(s"hdfs://$namenode:8020$dir/$testfile")
        input.count()
        fs.delete(new Path(s"$dir/$testfile"))
Otorgamiento de acceso a archivos de HDFS

Puede otorgar acceso de lectura a archivos de HDFS específicos. También puede eliminar ese acceso.

Para otorgar acceso a archivos de HDFS:
  1. Si aún no tiene ningún archivo de HDFS al que desee proporcionar acceso, puede crear uno. En este ejemplo se utiliza /user/oracle/test.txt.
    $ ls -l / > /tmp/test.txt
    $ hdfs dfs -put /tmp/test.txt  /user/oracle
    $ hdfs dfs -chmod o-r   /user/oracle/test.txt
  2. Defina los permisos correctos o elimine el acceso. Por ejemplo:
    • Defina el permiso read

      • Clusters no seguros:

        hdfs dfs -setfacl -m user:interpreteruser:r--  /user/oracle/test.txt
      • Clusters seguros:

        hdfs dfs -setfacl -m user:datastudio:r--  /user/oracle/test.txt
    • Elimine el acceso

      • Clusters no seguros:

        hdfs dfs -setfacl -m user:interpreteruser:--- /user/oracle/test.txt
      • Clusters seguros:

        hdfs dfs -setfacl -m user:datastudio:--- /user/oracle/test.txt
  3. Pruebe la configuración ejecutando el siguiente script en un bloc de notas. En este ejemplo, se utiliza Spark.
    %spark
    import scala.sys.process.Process
    import org.apache.spark.SparkConf
    
    //Get the Name Node Service
    val df_name_xml = Process(Seq("bash", "-c", "grep -EA1 -- 'dfs.namenode.servicerpc-address<|dfs.nameservices' /etc/hadoop/conf/hdfs-site.xml | grep -v dfs ") ).lineStream.mkString
    var df_name = df_name_xml.trim.replaceAll("<value>|</value>|:8022", "")
    println (df_name)
    
    var namenode=df_name //NameNode Nameservice
    var testfile="test.txt"
    var dir = "/user/oracle"
    
    var x = sc.textFile(s"hdfs://$namenode:8020$dir/$testfile")
    x.take(10).foreach(println)
Ejemplos de PySpark para HDFS

Los ejemplos siguientes muestran cómo utilizar PySpark con HDFS. Necesita acceso a HDFS, tal y como se describe en los temas anteriores. Asegúrese de utilizar el intérprete %pyspark.

Obtención de una sesión de Spark

Necesita una sesión de Spark para trabajar con HDFS.

%pyspark
from pyspark.sql import SparkSession
sparkSession = SparkSession.builder.appName("SparkSessionName").getOrCreate()

Leer en HDFS

Para leer con SparkSession:

%pyspark
df_load = sparkSession.read.csv('/hdfs/full/path/to/folder') 
df_load.show()

Escribir en HDFS

Utilice un marco de datos para escribir en HDFS. Para escribir con SparkSession:

%pyspark
data = [('One', 1), ('Two', 2), ('Three', 3)]
# Create DataFrame
df = sparkSession.createDataFrame(data)
# Write into HDFS 
df.write.mode("overwrite").csv("/hdfs/full/path/to/folder")
# /hdfs/full/path/to/folder is created when dfs.write is executed
Las opciones de df.write.mode especifican el comportamiento de la operación de guardado cuando ya existen datos:
  • append: agrega el contenido de este marco de datos a los datos existentes.

  • overwrite: sobrescribe los datos existentes.

  • ignore: ignora esta operación si ya existen datos.

  • error o errorifexists: devuelve una excepción si ya existen datos.

Ejemplo 1: escritura en un directorio

En este ejemplo, se escribe en un directorio /tmp al que todos los usuarios de HDFS tienen acceso.

%pyspark
from pyspark.sql import SparkSession
sparkSession = SparkSession.builder.appName("pyspark-write").getOrCreate()
# Create data
data = [('One', 1), ('Two', 2), ('Three', 3), ('Four', 4), ('Five', 5)]
df = sparkSession.createDataFrame(data)
# Write into HDFS 
df.write.mode("overwrite").csv("/tmp/testpysparkcsv")

Ejemplo 2: lectura de la información

En este ejemplo se lee la información del directorio /tmp/testpysparkcsv creado en el ejemplo anterior.

%pyspark
from pyspark.sql import SparkSession
sparkSession = SparkSession.builder.appName("pyspark-read").getOrCreate()
# Read from HDFS
df_load = sparkSession.read.csv('/tmp/testpysparkcsv')

df_load.show()

Acceso a Hive desde Spark y PySpark

Para acceder a Hive en un bloc de notas y leer y escribir en Hive, debe otorgar acceso a sus carpetas y archivos al usuario con el que la aplicación de bloc de notas Big Data Studio accederá a Hive.

Cuando Big Data Studio accede a Hive, se utilizan estos usuarios:

  • interpreteruser es el usuario y el grupo que se utilizan con los clusters no seguros.

  • datastudio es el usuario y el grupo que se utilizan con los clusters seguros (habilitados para Kerberos).

Tenga en cuenta que estos usuarios no son los que se utilizan para acceder a la interfaz de usuario web de Big Data Studio.

Otorgamiento de acceso a tablas de Hive

Puede permitir que Big Data Studio acceda a todas las tablas de Hive al agregar el usuario datastudio al grupo de administración hive. El usuario que realice estos pasos debe conectarse a un nodo del cluster como usuario root.

Nota

En clusters seguros de CDH, se puede otorgar al grupo y al usuario datastudio un acceso más detallado a tablas específicas mediante la creación y el uso de roles de Sentry. Para obtener más información, consulte Hive SQL Syntax for Use with Sentry (Sintaxis de Hive SQL para utilizar con Sentry) en la documentación de Cloudera.

Para otorgar acceso a tablas de Hive:

  1. Agregue el usuario datastudio a un grupo con acceso a Hive. En los siguientes ejemplos, el grupo es hive.

    Clusters no seguros:

    dcli -C usermod -a -G hive interpreteruser

    Clusters seguros:

    dcli -C usermod -a -G hive datastudio
  2. Verifique que el usuario forma parte de un grupo con acceso a Hive.

    Cluster no seguro:

    dcli -C id interpreteruser

    Cluster seguro:

    dcli -C id datastudio
  3. Pruebe la configuración ejecutando el siguiente script en un bloc de notas. En este ejemplo, se utiliza Spark. Ahora debería poder leer y escribir en bases de datos de Hive.
    %spark
    import org.apache.spark.sql.SparkSession
    val conf = sc.getConf
    sc.stop()
    
    val customSql = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate()
    
    customSql.sql(s"use default").show()
    customSql.sql(s"show tables").show()
    customSql.sql("CREATE TABLE IF NOT EXISTS testds ( eid int, name String,  salary String, destination String)").show()
    customSql.sql(s"describe  testds").show()
Eliminación del acceso a Hive

Para eliminar el acceso a Hive, elimine al usuario del grupo que tiene acceso. En este ejemplo, el grupo es hive.

Clusters no seguros:

dcli -C gpasswd -d interpreteruser hive

Clusters seguros:

dcli -C gpasswd -d datastudio hive
Ejemplos de PySpark para Hive

Los ejemplos siguientes muestran cómo utilizar PySpark con Hive. Necesita acceso a Hive, tal y como se describe en los temas anteriores. Asegúrese de utilizar el intérprete %pyspark.

Uso de spark.sql para trabajar con Hive

Utilice spark.sql para trabajar con Hive. Llamada de función spark.sql:

%pyspark
# Run the SQL instruction in quiet mode
spark.sql("SQL instruction")
# Show some output
spark.sql("SQL instruction").show()

Ejemplo de instrucciones SQL que no muestran información:

%pyspark
spark.sql ("DROP TABLE IF EXISTS hive_table")
spark.sql("CREATE TABLE IF NOT EXISTS hive_table (number int, Ordinal_Number string, Cardinal_Number string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' ")
spark.sql("load data inpath '/tmp/pysparktestfile.csv' into table pyspark_numbers_from_file")
spark.sql("insert into table pyspark_numbers_from_file2 select * from pyspark_numbers_from_file")
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_numbers (number int, Ordinal_Number string, Cardinal_Number string) USING com.databricks.spark.csv OPTIONS \
(path \"/full/path/hdfs/dataframe/folder\", header \"false\")")

Ejemplo de instrucciones SQL que muestran información:

%pyspark
spark.sql("show databases").show()
spark.sql("show tables").show()
spark.sql("describe hive_table ").show()
spark.sql("select * hive_Table limit 5").show()

Ejemplo 1: creación de una tabla

%pyspark
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_test_table ( eid int, name String,  salary String, destination String)")
spark.sql("describe pyspark_test_table ").show()

Ejemplo 2: eliminación de una tabla

%pyspark
spark.sql ("DROP TABLE IF EXISTS pyspark_test_table")

Ejemplo 3: creación de un archivo con 9000 filas

%pyspark
from pyspark.sql import SparkSession
import re

single_digit = ["","one", "two", "three" , "four" , "five" , "six" , "seven" , "eight" , "nine"] 
ten_to_nineteen  =["ten","eleven","twelve","thirteen" ,"fourteen","fifteen","sixteen","seventeen","eighteen","nineteen"]
two_digits  =["","","twenty","thirty","fourty","fithy","sixty","seventy","eighty","ninety"]
ten_power = ["hundred","thousand"]
data = []

def cardinalNum(number):
    if len (str(number)) == 1 :
        return single_digit[number]
    elif len (str(number)) == 2 :
        if str(number)[0] == "1" :
            return ten_to_nineteen[int(str(number)[1])]
        else:
            return two_digits[int(str(number)[0])] + " " + single_digit[int(str(number)[1])]
    elif len (str(number)) == 3 :
        return   single_digit[int(str(number)[0])] + " " + ten_power[0] + " " +  cardinalNum(int(str(number)[1:3]))
    elif len (str(number)) == 4 :
        return cardinalNum(int(str(number)[0:1])) + " " + ten_power[1] + " " + cardinalNum(int(str(number)[1:4]))
    else:
        return str(number)

def ordinalNum(number):
    if re.match(".*1[0-9]$", str(number)):
        return(str(number) + 'th')
    elif re.match(".*[04-9]$", str(number)):
        return(str(number) + 'th')
    elif re.match(".*1$", str(number)):
        return(str(number) + 'st')
    elif re.match(".*2$", str(number)):
        return(str(number) + 'nd')
    elif re.match(".*3$", str(number)):
        return(str(number) + 'rd')
    else:
        return(str(number))

sparkSession = SparkSession.builder.appName("pyspark-write").getOrCreate()

# Create data
for number in range(1, 9001):
    tmpdata=[ (number) ,( ordinalNum(number)) ,(cardinalNum(number))]
    data.append(tmpdata) 
    #print ( str(number) + ',' + ordinalNum(number) + ',' + cardinalNum(number))

df = sparkSession.createDataFrame(data)

# Write into HDFS
df.write.mode("overwrite").csv("/tmp/testpyspark")

Ejemplo 4: carga desde la carpeta del marco de datos

%pyspark
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_numbers (number int, Ordinal_Number string, Cardinal_Number string) USING com.databricks.spark.csv OPTIONS \
(path \"/tmp/testpyspark\", header \"false\")")
spark.sql ("describe pyspark_numbers").show()
spark.sql ("select * from pyspark_numbers").show()
spark.sql("select count(*) from pyspark_numbers").show()

Ejemplo 5: carga desde un archivo .csv

%pyspark
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_numbers_from_file (number int, Ordinal_Number string, Cardinal_Number string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' ")
spark.sql("load data inpath '/tmp/pysparktestfile.csv' into table pyspark_numbers_from_file")

Para crear el archivo pysparktestfile.csv, copie el archivo generado en el ejemplo 3 anterior, por ejemplo:

# Command listing files
hdfs dfs  -ls /tmp/testpyspark/

# Output listing files
Found 2 items
-rw-r--r--   3 datastudio supergroup          0 2020-08-21 16:50 /tmp/testpyspark/_SUCCESS
-rw-r--r--  
 3 datastudio supergroup     416250 2020-08-21 16:50 
/tmp/testpyspark/part-00000-5bf7c92a-e2ad-4f79-802e-c84c0c3b4cc0-c000.csv

# Command copying file
hdfs dfs -cp -p /tmp/testpyspark/part-00000-5bf7c92a-e2ad-4f79-802e-c84c0c3b4cc0-c000.csv /tmp/pysparktestfile.csv

Ejemplo 6: inserción de una tabla a otra

%pyspark
spark.sql("CREATE TABLE IF NOT EXISTS pyspark_numbers_new (number int, Ordinal_Number string, Cardinal_Number string) ")
spark.sql("insert into table pyspark_numbers_new  select * from pyspark_numbers_from_file")
spark.sql("select * from  pyspark_numbers_new").show()
spark.sql("select count(*) from pyspark_numbers_new").show()
spark.sql("select count(*) from pyspark_numbers_from_file").show()

Creación de versiones de un bloc de notas

Puede crear una versión de un bloc de notas, que sirve como una instantánea del bloc de notas de cuando se creó la versión.

Para crear una versión de un bloc de notas:
  1. Acceda a la aplicación de bloc de notas. Consulte Acceso a Big Data Studio.
  2. Desde la página Blocs de notas, abra el bloc de notas que desea versionar.
  3. Haga clic en Control de versiones en la parte superior izquierda.
  4. Seleccione Crear versión para crear una nueva versión del bloc de notas o Ver historial de versiones para ver y acceder a las versiones que ya se han creado.

Exportación de un bloc de notas

Puede exportar blocs de notas desde la aplicación de bloc de notas Big Data Studio a su computadora local. Esto incluye los blocs de notas Jupyter.

Para exportar un bloc de notas:
  1. Acceda a la aplicación de bloc de notas. Consulte Acceso a Big Data Studio.
  2. En la página Blocs de notas, haga clic en el icono Seleccionar blocs de notas.
  3. Seleccione el bloc de notas que desea exportar.
  4. Haga clic en el icono Exportar blocs de notas en la parte superior derecha.
  5. Cambie la configuración si lo desea y, a continuación, haga clic en Exportar. El archivo se exportará como un archivo .dsnb.
  6. Seleccione entre las opciones de exportación que se muestran y, a continuación, haga clic en Aceptar para continuar con la exportación.

Supresión de un bloc de notas

Puede suprimir los blocs de notas para los que tenga permisos de supresión.

Para suprimir un bloc de notas:
  1. Acceda a la aplicación de bloc de notas. Consulte Acceso a Big Data Studio.
  2. En la página Blocs de notas, haga clic en el icono Seleccionar blocs de notas.
  3. Seleccione el bloc de notas que desea suprimir.
  4. Haga clic en el icono Suprimir blocs de notas en la parte superior derecha y, a continuación, en Suprimir para confirmar la acción.

También puede suprimir un bloc de notas abriéndolo y haciendo clic en el icono Suprimir bloc de notas en la parte superior.

Accesos directos de teclado para los blocs de notas

Puede utilizar accesos directos de teclado para realizar determinadas acciones, como seleccionar párrafos y clonar y exportar blocs de notas.

Para ver una lista de los métodos abreviados disponibles, abra un bloc de notas, haga clic en su nombre de usuario en la parte superior derecha y seleccione Métodos abreviados de teclado en el menú. Puede abrir una visión general de todos los accesos directos o buscarlos. Si está en una página que no tiene métodos abreviados, no verá la opción Métodos abreviados de teclado.

También puede buscar los accesos directos pulsando ctrl+shift+f.