【问题标题】:How to create directory dynamically if it doesn't exist in HDFS by using pyspark and set file and directory permission as well如果HDFS中不存在目录,如何使用pyspark动态创建目录并设置文件和目录权限
【发布时间】:2021-08-04 08:11:45
【问题描述】:

我是 Hadoop 新手 我们可以在hadoop中动态创建目录吗?

目前我正在使用以下命令:

hadoop fs -mkdir -p /data/test1/test2/test3/

并使用以下命令设置文件权限:

hdfs dfs -chmod -R 777 /path /data/test1/test2/test3/t_bill_sheet.csv

从动态上讲,我的意思是 {year} 并按日期在文件夹中迭代,如 5、6、7 等。

提前致谢

【问题讨论】:

    标签: python-3.x hadoop pyspark hdfs


    【解决方案1】:

    您可以定义一个 bash 变量(或根据需要从当前日期计算)然后一遍又一遍地重复使用它

    YEAR=2000
    MONTH=03
    DAY=01
    PATH="/data/$YEAR/$MONTH/$DAY"
    
    hadoop fs -mkdir -p "$PATH"
    hdfs dfs -chmod -R 777 /path "$PATH/t_bill_sheet.csv"
    

    【讨论】:

    • 虽然这是一个组织良好的想法,但我需要将它与我们用python编写的产品集成,我们不想使用bash,
    【解决方案2】:

    您可以在 pyspark 中结合使用 exists()mkdirs() 方法,如下所示

    fs = spark._jvm.org.apache.hadoop.fs.FileSystem.get(spark._jsc.hadoopConfiguration())
    
    if not fs.exists(sc._jvm.org.apache.hadoop.fs.Path("path")): #returns true or false
        fs.mkdirs(spark._jvm.org.apache.hadoop.fs.Path("path"), FsPermission(777: Short) permission)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 2014-02-07
      • 1970-01-01
      • 2018-04-26
      • 1970-01-01
      相关资源
      最近更新 更多