我在hdfs上有一个目录,例如:/user/customers,在这个目录中我每3分钟转储一次客户的数据文件,我想写一个shell脚本来检查这个文件夹,如果有一个新的文件可用,那么这个文件数据将放在hbase中,我已经知道如何将数据放在hbase中。但是我对shell脚本非常陌生,我想知道如何获得新的文件名。
我的hadoop命令将文件的数据放入hbase中,如下所示:
hadoop jar /opt/mapr/hbase/hbase-0.94.12/hbase-0.94.12-mapr-1310.jar importtsv -Dimporttsv.separator=, -Dimporttsv.columns=HBASE_ROW_KEY,cust:phno,cust:name,cust:memebershiptype /user/tablename customer.csv
现在的想法是取代这个 customer.csv
使用最近转储到文件夹中的文件名,然后运行此命令。
因此,如果我没有错,我将需要一个cron作业来完成调度部分。但我需要的逻辑,我如何可以得到新的文件名在上述命令第一。接下来我要学习的是crontab,它每4分钟安排一次。请各位Maven指导。
2条答案
按热度按时间lxkprmvk1#
试试这个脚本。它将给出想法。基本上首先我列出的文件,并存储到客户所有的文件。txt。在为循环传递文件名,存储文件名到已经处理的文件。差分命令将找到新的文件,并存储它们需要处理的文件。这是非常简单的通过它。
whhtz7ly2#
重命名部件:
您的所有csv文件是否与
customer.csv
? 如果是,则需要在将每个文件上载到hdfs时重命名它们。crontab部分:
您可以使用以下命令每4分钟运行一次shell脚本:
通过键入添加此行
crontab -e
在终点站。