jmeter连接hive数据,出现请求报错(初步确定是jdbc连接hive驱动问题)

需求是:jmeret连接hive数据,进行数据库的压测。
但在jmeret进行jdbc连接hive数据库时,出现了驱动名称无法识别及在导入Hive相关jar包时,出现错误,导致一直存在报错。
烦请能否解决一下,有偿解决,谢谢

img

img

检查下你的jar 包在不在jmeter 类路径里

驱动包有问题

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
根据您提供的截图,可以看出出现的问题是JMeter无法找到正确的Hive JDBC驱动程序。

要解决这个问题,您需要按照以下步骤进行操作:

  1. 下载Hive JDBC驱动程序,可以从Apache Hive官网下载。请注意下载与Hive版本相对应的驱动程序。

  2. 将下载的JDBC驱动程序jar包复制到JMeter的lib目录下。您可以在JMeter安装目录下的lib文件夹中找到这个目录。

  3. 重新启动JMeter,打开测试计划,添加JDBC连接配置元件。

  4. 在JDBC连接配置元件中,填写Hive服务器的连接信息,包括JDBC URL、用户名、密码等。请确保JDBC URL中包含hive2协议前缀,例如jdbc:hive2://localhost:10000/default

  5. 在JDBC连接配置元件的“Driver Class”字段中,填写正确的Hive JDBC驱动程序类名。根据您提供的截图,应该是org.apache.hive.jdbc.HiveDriver。如果不确定驱动程序类名,可以查看驱动程序包中的文档或使用搜索引擎进行查询。

  6. 点击“Test”按钮,测试JDBC连接是否成功。如果连接成功,您应该可以看到连接测试结果的信息。如果连接失败,请检查JDBC URL、用户名、密码等连接信息是否正确,以及驱动程序jar包是否已正确导入。

希望以上步骤能够帮助您解决问题。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

该错误是找不到驱动的错误,既可能还是驱动文件不对,也可能是驱动名称不对,jdbc java class的配置那里,修改为org.apache.hadoop.hive.jdbc.HiveDriver看看,不行的话就更换驱动文件

您在使用JMeter进行JDBC连接Hive数据库时遇到了驱动名称无法识别和导入Hive相关jar包时出现错误的问题。这些问题可能由以下几个方面导致:

未正确安装Hive JDBC驱动程序
在使用JMeter进行JDBC连接Hive数据库之前,需要先安装Hive JDBC驱动程序。请确保您已经正确安装了Hive JDBC驱动程序,并且在连接Hive数据库时使用了正确的驱动程序名称和驱动程序类名。

驱动程序名称和驱动程序类名不匹配
在使用JMeter进行JDBC连接Hive数据库时,需要在JDBC请求中设置正确的驱动程序名称和驱动程序类名。如果驱动程序名称和驱动程序类名不匹配,就会出现驱动名称无法识别的错误。请检查您在JDBC请求中设置的驱动程序名称和驱动程序类名是否正确。

导入的Hive相关jar包存在冲突或版本不匹配
在导入Hive相关jar包时,可能会出现冲突或版本不匹配的情况。请确保您导入的Hive相关jar包与Hive版本匹配,并且没有与其他jar包冲突的情况。您可以通过在JMeter的lib目录下创建一个自定义目录,并将Hive相关jar包放在该目录下来解决这个问题。

总之,为了解决这个问题,您可以尝试重新安装Hive JDBC驱动程序,检查驱动程序名称和驱动程序类名是否匹配,并确保导入的Hive相关jar包不存在冲突或版本不匹配的情况。如果问题仍然存在,您可以查看JMeter的日志文件,以获得更详细的错误信息,以便更好地诊断问题。

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,确保你已经安装了JDBC驱动程序,通常Hive JDBC驱动程序位于Hive安装目录的lib目录中。如果没有,可以从官方Hive网站上下载。

其次,需要将Hive相关jar包添加到JMeter的classpath中。可以按照以下步骤操作:

  1. 在JMeter的bin目录下创建一个lib目录。
  2. 将Hive相关jar包复制到JMeter的lib目录下。
  3. 启动JMeter,并在测试计划中选择“Test Plan”,然后单击鼠标右键,选择“Add” > “Config Element” > “JDBC Connection Configuration”。
  4. 在JDBC Connection Configuration面板中,填写Hive JDBC连接相关信息,如下所示:
  • 名称:任意名称
  • 数据库驱动类:org.apache.hive.jdbc.HiveDriver
  • JDBC URL:jdbc:hive2://:/
  • 用户名:Hive用户名
  • 密码:Hive密码
  1. 确认配置后,单击“Test”按钮,以测试连接是否正常。

以下是一个示例JMeter测试计划的代码,用于连接Hive数据库并执行简单的SQL查询:

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" xmlns:kg="http://www.kepler-rominfo.com/xml/ns/jmeter">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
      <stringProp name="TestPlan.comments"></stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <JDBCDataSource guiclass="JDBCTestElementGui" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
        <stringProp name="dataSource">Hive Connection</stringProp>
        <stringProp name="url">jdbc:hive2://<hostname>:<port>/<database></stringProp>
        <stringProp name="driver">org.apache.hive.jdbc.HiveDriver</stringProp>
        <stringProp name="username">Hive User</stringProp>
        <stringProp name="password">Hive Password</stringProp>
        <boolProp name="autocommit">false</boolProp>
        <boolProp name="keepAlive">true</boolProp>
        <stringProp name="transactionIsolation">DEFAULT</stringProp>
        <stringProp name="trimInterval">60000</stringProp>
        <intProp name="maxIdle">8</intProp>
        <intProp name="maxActive">8</intProp>
        <intProp name="preinit">10</intProp>
        <stringProp name="validationQuery">SELECT 1</stringProp>
        <stringProp name="initQuery"></stringProp>
        <stringProp name="connectedQuery"></stringProp>
        <stringProp name="timeout">10000</stringProp>
        <boolProp name="debug">false</boolProp>
        <boolProp name="useEquals">false</boolProp>
        <boolProp name="sameUserConnection">false</boolProp>
        <boolProp name="perUserPool">false</boolProp>
        <boolProp name="resetAutogeneratedKeys">false</boolProp>
        <stringProp name="sqlServerUrlFormat">jdbc:sqlserver://{0}\;databaseName={1}</stringProp>
        <stringProp name="oracleUrlFormat">jdbc:oracle:thin:@{0}\:{1}\:{2}</stringProp>
      </JDBCDataSource>
      <hashTree/>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <intProp name="LoopController.loops">1</intProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">1</stringProp>
        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
        <longProp name="ThreadGroup.start_time">1486070639000</longProp>
        <longProp name="ThreadGroup.end_time">1486070639000</longProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration"></stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <JDBCRequest guiclass="TestSamplerGui" testclass="JDBCRequest" testname="JDBC Request" enabled="true">
          <stringProp name="dataSource">Hive Connection</stringProp>
          <stringProp name="query">SELECT * FROM table</stringProp>
          <boolProp name="queryArguments">false</boolProp>
          <boolProp name="queryArgumentsTypes">false</boolProp>
          <stringProp name="variableNames"></stringProp>
          <stringProp name="resultVariable"></stringProp>
          <stringProp name="queryTimeout"></stringProp>
          <stringProp name="resultSetHandler">Store as String</stringProp>
          <stringProp name="trim">NO</stringProp>
        </JDBCRequest>
        <hashTree/>
      </hashTree>
    </hashTree>
  </hashTree>
</jmeterTestPlan>

以上是一个简单的JMeter测试计划,它包含了一个JDBC连接配置元素和一个JDBC请求元素。在JDBC请求元素中,可以填写任意SQL查询。通常来说,压测使用的SQL查询应当比较复杂,以真实模拟生产环境的压力。

希望这能帮到你,如果还有问题可以随时询问。
如果我的回答解决了您的问题,请采纳!

您好,我是一名资深的IT专家,对于解决您的问题,我可以提供以下建议:

  1. 确认您使用的是哪个Hive版本,以及您的Java版本是否支持Hive相关jar包。您可以在Hive官方文档中查看Hive和Java的兼容性列表。

  2. 确认您的jdbc驱动名称是否正确,可以在jmeter的配置文件中添加相应的驱动名称和路径,然后重新启动jmeter服务。

  3. 如果您使用的是JDBC连接Hive的方式,需要确保您的Java环境已经安装了Hive相关jar包。

希望以上建议对您有所帮助。如果还有问题,请随时联系我。