我正在尝试使用Apache Drill JDBC(https://drill.apache.org/docs/using-the-jdbc-driver/)为logstash 5配置输入
下面是我为logstash输入的jdbc配置。
input {
jdbc {
jdbc_driver_library => "jdbc_jars/drill-jdbc-all-1.10.0.jar"
jdbc_driver_class => "org.apache.drill.jdbc.Driver"
jdbc_connection_string => "jdbc:drill:zk=local"
jdbc_user=> "dfs"
schedule => "* * * * *"
statement => "select * from `sample.json`;"
}
}
我基本上得到了“失败的test_connection”的logstash WARN。因此,虽然logstash正在启动,但数据库连接失败。
有什么建议吗?
答案 0 :(得分:0)
我发现您的配置存在一些问题。
jdbc_connection_string => "jdbc:drill:zk=local"
的行告诉logstash,zookeeper与logstash在同一节点上运行。您需要提供的是jdbc_connection_string => "jdbc:drill:zk=zk_hostname_or_ip:zk_port"
。与设置钻取集群的人员交谈,找出zookeeper节点的主机名或ip和端口。dfs 不是钻取用户,它是Drill的一个存储插件的名称。如果要对存储在hdfs change
上的文件运行查询statement => "select * from `sample.json`;"
到
statement => "select * from dfs.`/path/to/sample.json`;"
如果您没有为Drill配置身份验证,您的配置应该如下所示。
input {
jdbc {
jdbc_driver_library => "jdbc_jars/drill-jdbc-all-1.10.0.jar"
jdbc_driver_class => "org.apache.drill.jdbc.Driver"
jdbc_connection_string => "jdbc:drill:zk=zk_hostname_or_ip:zk_port"
schedule => "* * * * *"
statement => "select * from `dfs./path/to/sample.json`;"
}
}
如果您为Drill配置了身份验证,并且您知道您的Drill用户名和密码,那么您的配置应如下所示。
input {
jdbc {
jdbc_driver_library => "jdbc_jars/drill-jdbc-all-1.10.0.jar"
jdbc_driver_class => "org.apache.drill.jdbc.Driver"
jdbc_connection_string => "jdbc:drill:zk=zk_hostname_or_ip:zk_port"
schedule => "* * * * *"
statement => "select * from `dfs./path/to/sample.json`;"
jdbc_user => "myusername"
jdbc_password => "mypassword"
}
}