我正在尝试将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函数
答案 0 :(得分:3)
我建议您实际上应该使用HDFS连接器,而不是重新发明Wheel。您将在https://github.com/confluentinc/kafka-connect-hdfs
中获得更多详细信息