logstash输入jdbc插件Apache Drill

时间:2017-07-30 06:34:03

标签: logstash logstash-configuration apache-drill

我正在尝试使用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正在启动,但数据库连接失败。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我发现您的配置存在一些问题。

  1. 您需要为Drill正在使用的zookeeper节点提供有效的IP地址和端口。您提供给logstash jdbc_connection_string => "jdbc:drill:zk=local"的行告诉logstash,zookeeper与logstash在同一节点上运行。您需要提供的是jdbc_connection_string => "jdbc:drill:zk=zk_hostname_or_ip:zk_port"。与设置钻取集群的人员交谈,找出zookeeper节点的主机名或ip和端口。
  2. dfs 不是钻取用户,它是Drill的一个存储插件的名称。如果要对存储在hdfs change

    上的文件运行查询
    statement => "select * from `sample.json`;" 
    

    statement => "select * from dfs.`/path/to/sample.json`;"
    
  3. 如果您没有为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"
      }
    }