我们每天从应用程序中获取新文件,以csv形式存储在windows服务器中说c:/ program files(x86)/webapps/apachetomcat/.csv每个文件中都有不同的数据,那么有没有hadoop将文件从Windows服务器传输到hadoop hdfs的组件,我遇到了水槽,kafka但没有得到正确的例子,任何人都可以在这里遮光。
所以每个文件都有单独的名称,大小高达10-20mb,每日文件数超过200个文件。一旦文件添加到windows服务器,flume / kafka应该能够将这些文件放在hadoop中,以后的文件是从火花处理的HDFS导入并移动到已处理的文件到HDFS中的另一个文件夹
答案 0 :(得分:1)
Flume是最佳选择。需要配置水槽剂(过程)。水槽剂有3个部分:
水槽 - 水槽将寻找新文件的位置。 c:/ program files(x86)/webapps/apachetomcat/.csv在你的情况下。
水槽 - 水槽将发送文件的位置。你个案中的HDFS位置。
Flume频道 - 文件在发送到接收器之前的临时位置。您需要使用"文件频道"为你的情况。
点击here获取示例。
答案 1 :(得分:0)
根据我的评论,更多细节将有助于缩小可能性,例如首先考虑,将文件移动到服务器,然后创建一个bash脚本并使用cron进行计划。
put
Usage: hdfs dfs -put <localsrc> ... <dst>
Copy single src, or multiple srcs from local file system to the destination file system. Also reads input from stdin and writes to destination file system.
hdfs dfs -put localfile /user/hadoop/hadoopfile
hdfs dfs -put localfile1 localfile2 /user/hadoop/hadoopdir
hdfs dfs -put localfile hdfs://nn.example.com/hadoop/hadoopfile
hdfs dfs -put - hdfs://nn.example.com/hadoop/hadoopfile Reads the input from stdin.
Exit Code:
Returns 0 on success and -1 on error.