AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-4910936

Pat's questions

Martin Hope
Pat
Asked: 2024-12-03 09:19:51 +0800 CST

ExecutorService可调用线程mybatis插入1M+记录抛出CannotGetJdbcConnectionException获取JDBC连接失败

  • 6

以下是 Hikari 连接设置

spring.datasource.hikari.connection-timeout=600000
spring.datasource.hikari.idle-timeout=300000
spring.datasource.hikari.max-lifetime=1800000
spring.datasource.hikari.maximum-pool-size=15
spring.datasource.hikari.minimum-idle=5

下面是代码,分配与最大连接数相同的线程池大小,将 1M+ 记录列表按 10k 拆分并插入到数据库中,使用 mybatis 批处理会话

ExecutorService executorService = Executors.newFixedThreadPool(15);
List<List<Employee>> listOfEmployees = new ArrayList<>(IntStream.range(0, totalEmployeeList.size()).boxed().collect(
Collectors.groupingBy(e -> e / 10000, Collectors.mapping(totalEmployeeList::get, Collectors.toList()))).values());
List<Callable<Void>> callables = listOfEmployees.stream().map(sublist ->
(Callable<Void>) () -> {
     dao.insertEmployees(sublist);
      return null;
    }).collect(Collectors.toList());
try {
   executorService.invokeAll(callables);
   executorService.shutdown();
} catch (InterruptedException e) {
  log.error("Exception in executing thread save", e);
}

批处理会话代码配置:

@Bean(value = "batchSqlSession")
@Autowired
public SqlSessionTemplate batchSqlSession(SqlSessionFactory sqlSessionFactory) {       
   return new SqlSessionTemplate(sqlSessionFactory, ExecutorType.BATCH);
}

DAO:

public class EmployeeDAO {
private final SqlSessionTemplate sqlSessionTemplate;
private final EmployeeMapper employeeMapper;
    public EmployeeDAO (EmployeeMapper employeeMapper,
                     @Qualifier("batchSqlSession") SqlSessionTemplate sqlSessionTemplate) {
       this.sqlSessionTemplate = sqlSessionTemplate;
       this.employeeMapper=  sqlSessionTemplate.getMapper(EmployeeMapper.class);;
    }

@Transactional
public void insertEmployees(List<Employee> employeeList) {
        employeeList.stream().parallel().forEach(employee-> {
            try{
                employeeMapper.insertEmployees(employee);
            } catch(Exception ex){
                log.error("Exception - {} while inserting data {}",ex,employee.toString());
            }
        });
        sqlSessionTemplate.flushStatements();
        sqlSessionTemplate.clearCache();
    }

当我运行这个时,我得到了

引起原因:org.apache.ibatis.exceptions.PersistenceException:

更新数据库时出错。原因:org.springframework.jdbc.CannotGetJdbcConnectionException:无法更新

获取JDBC连接

错误可能存在于mapper/EmployeeMapper.xml中

该错误可能涉及 com.fmr.qrit.datasync.mapper.EmployeeMapper.insertEmployees

执行更新时发生错误

原因:org.springframework.jdbc.CannotGetJdbcConnectionException:无法获取 JDBC 连接

org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:84)在 org.mybatis.spring.transaction.SpringManagedTransaction.openConnection(SpringManagedTransaction.java:80)在 org.mybatis.spring.transaction.SpringManagedTransaction.getConnection(SpringManagedTransaction.java:67)在 org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:348)在 org.apache.ibatis.executor.BatchExecutor.doUpdate(BatchExecutor.java:70)在 org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)在 org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)在org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197) ... 另外 22 个原因:java.sql.SQLTransientConnectionException:HikariPool-1 - 连接不可用,请求在 30000 毫秒后超时(总计=10、活动=10、空闲=0、等待=6)位于 com.zaxxer.hikari.pool.HikariPool.createTimeoutException(HikariPool.java:686)位于 com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:179)位于 com.zaxxer.hikari.pool.HikariPool.getConnection(HikariPool.java:144)位于 com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:127)位于org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource.getConnection(AbstractRoutingDataSource.java:213) 在 org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) 在 org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) 在 org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) ... 还有 29 个

我尝试将连接池大小从 10 增加到 15,然后将连接超时从 300000 增加到 600000,但仍然出现同样的错误

spring-boot
  • 2 个回答
  • 42 Views
Martin Hope
Pat
Asked: 2024-02-19 22:45:16 +0800 CST

使用 JDBC 的 Hadoop-Hive 大数据访问

  • 6

我正在尝试使用 JDBC 配置单元与密码较少的可信身份验证连接到大数据,这是我的代码

String conStr = "jdbc:hive2://bigdataplatform.abc.com:10000/staging;principal=hive/[email protected];ssl=true";
Class.forName("org.apache.hive.jdbc.HiveDriver");
con = DriverManager.getConnection(conStr, "my_fid", "");
Statement stmt = con.createStatement();
stmt.executeQuery("show databases");
System.out.println("show database successfully.");

下面是我添加的依赖项

hive-jdbc-3.1.3.jar
hive-service-rpc-3.1.3.jar
jdk.tools-1.8.0_321.jar
libthrift-0.9.3.jar
slf4j-api-2.0.11.jar
hive-service-3.1.3.jar
curator-client-2.12.0.jar
hive-exec-3.1.3.jar
hadoop-common-3.1.0.jar
commons-configuration2-2.1.1.jar
hadoop-auth-3.1.0.jar
woodstox-core-5.0.3.jar
stax2-api-3.1.4.jar
commons-collections-3.2.2.jar

以下是 krb5.conf 文件领域条目

[realms]
    BIGIP.abc.com = {  
   kdc = xxx.abc.com:88
    admin_server = ****
    kpasswd_server = *****
    master_kdc = ***
}

我将其打包为 jar,当我使用以下命令从 RHEL8 服务器执行它时

${JAVA_HOME}/bin/java -jar -Xms4000m /tmp/Hive_Test.jar com.data.TestMain

以下是我收到的错误,这意味着什么,我需要更新 krb5.conf 文件吗?

Caused by: java.lang.IllegalAccessException: class org.apache.hadoop.security.authentication.util.KerberosUtil cannot access class sun.security.krb5.Config (in module java.security.jgss) because module java.security.jgss does not export sun.security.krb5 to unnamed module @571613d2
hadoop
  • 1 个回答
  • 13 Views
Martin Hope
Pat
Asked: 2023-11-08 05:47:40 +0800 CST

在同一行 oracle 的列中拆分、连接和更新

  • 5

根据分隔符“,”拆分列,然后在结果中使用分隔符“-”拆分。获取第二个分割的所有第一个元素,并用分隔符“,”连接,并将其更新到同一行中的列

ID Supplier_ID_NAME 
1  1234 - Supplier 1,2145 - Supplier 3
2  1235 - Supplier 2
3  1246 - Supplier 4,1234 - Supplier 1, 1478 - Supplier 5

我需要的是

ID Supplier_id
1  1234,2145
2  1235
3  1246,1234,1478

我可以使用分隔符“,”来分割值,但是这个查询只让我得到分割的第一个元素。例如上面例子中的 ID: 1 它只给我 1234

select id,Supplier_id, regexp_substr (
           Supplier_ID_NAME ,
           '[^,]+',
           1,
           length ( Supplier_ID_NAME ) - length ( replace ( Supplier_ID_NAME, ',' ) ) + 1) from  suppliers_tbl;

如何按 拆分,然后按“-”拆分,然后连接并更新列

sql
  • 1 个回答
  • 22 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve