Spark SQL - Arquivos Parquet

Parquet é um formato colunar, suportado por muitos sistemas de processamento de dados. As vantagens de ter um armazenamento colunar são as seguintes -

  • O armazenamento colunar limita as operações de E / S.

  • O armazenamento colunar pode buscar colunas específicas que você precisa acessar.

  • O armazenamento colunar consome menos espaço.

  • O armazenamento colunar fornece dados melhor resumidos e segue a codificação específica do tipo.

O Spark SQL oferece suporte para leitura e gravação de arquivos em parquet que capturam automaticamente o esquema dos dados originais. Assim como os conjuntos de dados JSON, os arquivos parquet seguem o mesmo procedimento.

Vamos dar outra olhada no mesmo exemplo de employee registrar dados nomeados employee.parquet colocado no mesmo diretório onde o spark-shell está sendo executado.

Given data- Não se preocupe em converter os dados de entrada de registros de funcionários em formato parquet. Usamos os seguintes comandos que convertem os dados RDD em arquivo Parquet. Coloque oemployee.json documento, que usamos como arquivo de entrada em nossos exemplos anteriores.

$ spark-shell
Scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
Scala> val employee = sqlContext.read.json(“emplaoyee”)
Scala> employee.write.parquet(“employee.parquet”)

Não é possível mostrar o arquivo parquet. É uma estrutura de diretório, que você pode encontrar no diretório atual. Se quiser ver o diretório e a estrutura do arquivo, use o seguinte comando.

$ cd employee.parquet/

$ ls
_common_metadata
Part-r-00001.gz.parquet
_metadata
_SUCCESS

Os comandos a seguir são usados ​​para ler, registrar na tabela e aplicar algumas consultas nela.

Abra o Spark Shell

Inicie o shell do Spark usando o seguinte exemplo

$ spark-shell

Criar objeto SQLContext

Gere SQLContext usando o seguinte comando. Aqui,sc significa objeto SparkContext.

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)

Ler entrada de arquivo de texto

Crie um DataFrame RDD lendo os dados do arquivo parquet denominado employee.parquet usando a seguinte declaração.

scala> val parqfile = sqlContext.read.parquet(“employee.parquet”)

Armazene o DataFrame na Tabela

Use o seguinte comando para armazenar os dados DataFrame em uma tabela chamada employee. Após este comando, podemos aplicar todos os tipos de instruções SQL nele.

scala> Parqfile.registerTempTable(“employee”)

A mesa dos funcionários está pronta. Vamos agora passar algumas consultas SQL na tabela usando o métodoSQLContext.sql().

Selecione Consulta no DataFrame

Use o seguinte comando para selecionar todos os registros do employeemesa. Aqui, usamos a variávelallrecordspara capturar todos os dados de registros. Para exibir esses registros, ligueshow() método sobre ele.

scala> val allrecords = sqlContext.sql("SELeCT * FROM employee")

Para ver os dados do resultado de allrecords DataFrame, use o seguinte comando.

scala> allrecords.show()

Resultado

+------+--------+----+
|  id  | name   |age |
+------+--------+----+
| 1201 | satish | 25 |
| 1202 | krishna| 28 |
| 1203 | amith  | 39 |
| 1204 | javed  | 23 |
| 1205 | prudvi | 23 |
+------+--------+----+