получить расположение раздела Hive из Pyspark SQL - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь получить информацию о расположении раздела Base Hive из результата describe formatted db.table во фрейм данных.

Я использую Spark 1.6 и у меня есть таблица Hive External, которая разбита на столбец dw_date, если я запускаю команду hive describe formatted db.table, я могу видеть результат ниже

+-------------------------------+----------------------------------------------------------------+-----------------------+--+
|           col_name            |                           data_type                            |        comment        |
+-------------------------------+----------------------------------------------------------------+-----------------------+--+
| # col_name                    | data_type                                                      | comment               |
|                               | NULL                                                           | NULL                  |
| id                            | string                                                         |                       |
| name                          | string                                                         |                       |
|                               | NULL                                                           | NULL                  |
| # Partition Information       | NULL                                                           | NULL                  |
| # col_name                    | data_type                                                      | comment               |
|                               | NULL                                                           | NULL                  |
| dw_date                       | string                                                         |                       |
|                               | NULL                                                           | NULL                  |
| # Detailed Table Information  | NULL                                                           | NULL                  |
| Database:                     | stage                                                          | NULL                  |
| Owner:                        | hive                                                           | NULL                  |
| CreateTime:                   | Thu May 30 15:11:06 EDT 2019                                   | NULL                  |
| LastAccessTime:               | UNKNOWN                                                        | NULL                  |
| Protect Mode:                 | None                                                           | NULL                  |
| Retention:                    | 0                                                              | NULL                  |
| Location:                     | hdfs://devlocation1/share/myserver123/dev/stage/partition_chk  | NULL                  |
| Table Type:                   | EXTERNAL_TABLE                                                 | NULL                  |
| Table Parameters:             | NULL                                                           | NULL                  |
|                               | EXTERNAL                                                       | TRUE                  |
|                               | transient_lastDdlTime                                          | 1559243466            |
|                               | NULL                                                           | NULL                  |
| # Storage Information         | NULL                                                           | NULL                  |
| SerDe Library:                | org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe             | NULL                  |
| InputFormat:                  | org.apache.hadoop.mapred.TextInputFormat                       | NULL                  |
| OutputFormat:                 | org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat     | NULL                  |
| Compressed:                   | No                                                             | NULL                  |
| Num Buckets:                  | -1                                                             | NULL                  |
| Bucket Columns:               | []                                                             | NULL                  |
| Sort Columns:                 | []                                                             | NULL                  |
| Storage Desc Params:          | NULL                                                           | NULL                  |
|                               | field.delim                                                    | ,                     |
|                               | line.delim                                                     | \n                    |
|                               | serialization.format                                           | ,                     |
+-------------------------------+----------------------------------------------------------------+-----------------------+--+

Теперь из этого результата все, что я хочу, - это сохранить базовое расположение разделов во фрейме данных или в rdd или даже в переменной (просто хочу как-то извлечь это).

Значение, которое я хочу получить из приведенного выше результата:

hdfs://devlocation1/share/myserver123/dev/stage/partition_chk

Я начал со следующего подхода:

  1. создать фрейм данных
  2. отфильтровать желаемое значение
  3. форматировать результат
df=sqlContext.sql("describe formatted stage.partition_chk")

df1=df.where(df[result].contains("Location:"))

Однако я не могу получить информацию о местоположении: информация сверху. Любые предложения о том, как мы можем это сделать?

Спасибо, Sid

...