03-01-2023, 01:19 AM
Buenos días, he estado buscando la solución a extraer parquet de ruta a partir de una expresión, archivos distribuidos
Tengo un dataframe que me ayuda a construir el path donde estara almacenado el parquet que necesito, pero no logro reconstruir el path por completo entonces mi dataframe queda de la siguiente manera
Registro 1 | /data/master/uuaa/tabla1/ko_tabla1*campo1*
Registro n | /data/master/uuaa/tablan/ko_tablan*campon*
Ahora busco una función que tome cada expresión y me traiga los path coincidentes, ya que en la terminal puedo usar el siguiente comando:
hdfs dfs -ls /data/master/uuaa/tabla1/ko_tabla1*campo1*
Y el resultado será:
/data/master/uuaa/tabla1/ko_tabla_fechaconmilisegundos1_campo1_version1
/data/master/uuaa/tabla1/ko_tabla_fechaconmilisegundos2_campo1_version2
Utilice la función glob.glob como me ayudo a encontrar el chatGpt3 openai, sin embargo esta función pide que el path se defina como:
hdfs://namenode/data/master/uuaa/tabla1/ko_tabla1*campo1*
No puedo obtener el namenode puesto que la única forma que encontré es mediante comandos de configuración y están restringidos, (hdfs getconf -namenodes)
Si alguno tiene alguna idea agradezco su ayuda, cuando tenga los paths espero poderlos cargar para hacer mi dataframe mas completo
Tengo un dataframe que me ayuda a construir el path donde estara almacenado el parquet que necesito, pero no logro reconstruir el path por completo entonces mi dataframe queda de la siguiente manera
Registro 1 | /data/master/uuaa/tabla1/ko_tabla1*campo1*
Registro n | /data/master/uuaa/tablan/ko_tablan*campon*
Ahora busco una función que tome cada expresión y me traiga los path coincidentes, ya que en la terminal puedo usar el siguiente comando:
hdfs dfs -ls /data/master/uuaa/tabla1/ko_tabla1*campo1*
Y el resultado será:
/data/master/uuaa/tabla1/ko_tabla_fechaconmilisegundos1_campo1_version1
/data/master/uuaa/tabla1/ko_tabla_fechaconmilisegundos2_campo1_version2
Utilice la función glob.glob como me ayudo a encontrar el chatGpt3 openai, sin embargo esta función pide que el path se defina como:
hdfs://namenode/data/master/uuaa/tabla1/ko_tabla1*campo1*
No puedo obtener el namenode puesto que la única forma que encontré es mediante comandos de configuración y están restringidos, (hdfs getconf -namenodes)
Código:
import glob
def get_paths(path_expression):
return glob.glob(path_expression)
path_expression = 'hdfs://namenode/path/to/*'
# Crea un RDD con la expresión de path
path_expression_rdd = sc.parallelize([path_expression])
# Aplica la función get_paths a cada elemento del RDD y guarda el resultado en una lista
paths = path_expression_rdd.map(get_paths).collect()
print(paths) # imprime una lista con todos los paths que coinciden con la expresión dada en HDFS
Si alguno tiene alguna idea agradezco su ayuda, cuando tenga los paths espero poderlos cargar para hacer mi dataframe mas completo