将Kafka主题数据写入HDFS

时间:2019-03-12 13:36:34

标签: scala apache-kafka hdfs kafka-consumer-api

我正在尝试将kafka主题数据推送到HDFS。我可以在kafka-consumer-console窗口中看到kafka主题数据。

这是我的代码。不调用writeToWebHDFS(record)方法本身。直到Before calling HDFS正在打印。 writeToWebHDFS方法包含新的着陆区网址和编写代码。

  

val流= KafkaUtils.createDirectStream [String,String](         ssc,         首选一致         订阅[字符串,字符串](topics,kafkaParams))
        stream.map(record =>(record.value()。toString))。print
        print(“ +++++++++++++调用HDFS之前+++++++++++++++++++++++++”)         val uploadFile = stream.map(record => writeToWebHDFS(record))

writeToWebHDFS代码段

  

def writeToWebHDFS(记录:> org.apache.kafka.clients.consumer.ConsumerRecord [String,String])= {

     

val res = Http(“ https://hdfsurl:port/gateway/webhdfs/webhdfs/v1/opt/sandboxes/user/test/” + record.key()。toString()。toLowerCase()。replaceAll(“”,“”)+“ .txt?op = CREATE&overwrite = true”) 。放(””)         .option(HttpOptions.allowUnsafeSSL)         .auth(“ user_mail_id”,“ * pwd ”)。asString()

     

有效位置= res.headers.get(“位置”).get(0)       val upload = Http(location.toString())。put(record.value())         .timeout(30000,30000)         .option(HttpOptions.allowUnsafeSSL)         .auth(“ user_mail_id”,“ * pwd ”)。asString

     

print(“完成上传到HDFS”)   }

请建议我如何调用writeToWebHDFS函数

1 个答案:

答案 0 :(得分:3)

我建议您实际上应该使用HDFS连接器,而不是重新发明Wheel。您将在https://github.com/confluentinc/kafka-connect-hdfs

中获得更多详细信息