相关疑难解决方法(0)

从 Pyspark df 写入超过 5000 万条到 PostgresSQL,最有效的方法

将数百万条记录从 Spark 数据帧插入到 Postgres 表的最有效方法是 5000 万条记录。过去,我通过使用批量复制和批量大小选项从 spark 到MSSQL做到了这一点, 这也很成功。

Postgres 是否有类似的东西?

添加我尝试过的代码以及运行该过程所需的时间:

def inserter():
    start = timer()
    sql_res.write.format("jdbc").option("numPartitions","5").option("batchsize","200000")\
    .option("url", "jdbc:postgresql://xyz.com:5435/abc_db") \
    .option("dbtable", "public.full_load").option("user", "root").option("password", "password").save()
    end = timer()
    print(timedelta(seconds=end-start))
inserter()
Run Code Online (Sandbox Code Playgroud)

因此,我对 1000 万条记录执行了上述方法,并按照 中指定的numPartitions方式进行了 5 个并行连接,并且还尝试了 200k 的批量大小

该过程花费的总时间为0:14:05.760926(十四分五秒)。

有没有其他有效的方法可以减少时间?

我可以使用的有效或最佳批量大小是多少?增加我的批量大小会更快地完成工作吗?或者打开多个连接,即> 5 帮助我加快进程?

1000 万条记录平均 14 分钟还不错,但正在寻找以前会这样做的人来帮助回答这个问题。

postgresql bigdata apache-spark apache-spark-sql pyspark

16
推荐指数
1
解决办法
2885
查看次数

Arval SQLException:致命:对不起,已经有很多客户已经在postgres

我在PostgreSQL 9.1中使用了一个数据库,其中的条目是从另一个程序不断进入的.我在6秒后从Ajax发送请求以获取最新的entry.tomcat输出窗口显示异常---

Arval SQLException: FATAL: sorry, too many clients already
Run Code Online (Sandbox Code Playgroud)

并且程序在此之后也正常工作.当我用查询检查我的postgres ---

select count(*) from pg_stat_activity;
Run Code Online (Sandbox Code Playgroud)

它显示连接正在不断增加,但我在每次请求后关闭连接.我正在使用netbeans和struts 1.3.

     long previousSNO = Long.parseLong(request.getParameter("previousSNO"));
    if(previousSNO == 0)
    {
        sb.append("SELECT sno,search_type,search_value,search_date FROM log_temp ORDER BY search_date DESC LIMIT 20");
        prest = cb.executeSQLQuery(sb.toString());
        rs = prest.executeQuery();
    }
    else
    {
        sb.append("SELECT sno,search_type,search_value,search_date FROM log_temp WHERE sno > ? ORDER BY search_date DESC");
        prest = cb.executeSQLQuery(sb.toString());    
        prest.setLong(1, previousSNO);
        rs = prest.executeQuery();
    }
    rs.last();
    int c = rs.getRow();
    rs.beforeFirst();

    if(rs!=null && c>0)
    {    
    //code for making json …
Run Code Online (Sandbox Code Playgroud)

java linux postgresql

8
推荐指数
2
解决办法
5万
查看次数

如何通过 SQL 命令更改 Postgres 的 max_connections

我们有一个托管的 PostgreSQL,无法访问系统或 *.conf 文件。

我确实有管理员访问权限,可以使用 Oracle SQL 开发人员连接到它。我可以运行任何命令来增加 max_connections。所有其他参数似乎都可以共享内存并且缓冲区可以容纳更多连接,因此那里没有问题。

postgresql

7
推荐指数
2
解决办法
1万
查看次数

ASP.NET Core 3.1中使用多个connectionString DI NpgsqlConnection postgreSQL的正确方法

我正在努力使用, &NpgsqlConnection()中的多个连接字符串注册 DI 。ASP.NET Core 3.1Dapper v2.0.78Postgres v11

我将提供当前状态并修复以下代码:

当前状态

这个想法来自这里

步骤1Startup.cs --> ConfigureServices()

services.AddTransient<IDbConnectionFactory, DapperDbConnectionFactory>(sp =>
{
  var connectionDict = new Dictionary<DatabaseConnectionName, string>
  {
     { DatabaseConnectionName.Cnn1, "Connectionstring 1"},
     { DatabaseConnectionName.Cnn2, "Connectionstring 2"}
  };
  return new DapperDbConnectionFactory(connectionDict);
});
Run Code Online (Sandbox Code Playgroud)

第2步DapperDbConnectionFactory看起来像这样:

public class DapperDbConnectionFactory : IDbConnectionFactory
{
    private readonly IDictionary<DatabaseConnectionName, string> _connectionDict;

    public DapperDbConnectionFactory(IDictionary<DatabaseConnectionName, string> connectionDict)
    {
        _connectionDict = connectionDict;
    }

    public IDbConnection CreateDbConnection(DatabaseConnectionName connectionName)
    {
        string connectionString = null;

        if …
Run Code Online (Sandbox Code Playgroud)

c# postgresql dependency-injection connection-pooling asp.net-core

6
推荐指数
1
解决办法
2万
查看次数

如何通过 Kubernetes statefulset 环境变量更改 Postgresql max_connections 配置?

在 Kubernetes 中,来自 ConfigMap 的环境变量不会更改 PostgreSql pod 中的 max_connections 属性。您如何通过 Kubernetes 中的环境变量更改 Postgres max_connections 配置?

我尝试使用以下参数来配置 Postgres。

问题是,我可以按预期使用 DB、USER 和 PASSWORD 参数和值。但我需要更改 max_connections 配置。我做了相关研究,看来 PGOPTIONS 是发送配置更改的正确选择。即使我尝试了 PGOPTIONS 和其他变体,对 max_connections 值也没有影响。我正在连接 postgresql 并且我正在执行 SHOW MAX_CONNECTIONS 查询,即使我在环境配置值中指定了 1000,它也会显示 100。

我在 digitalocean 中使用 Kubernetes 1.14。

配置映射

apiVersion: v1
kind: ConfigMap
metadata:
  name: postgres-config-demo
  labels:
    app: postgres
data:
  POSTGRES_DB: demopostgresdb
  POSTGRES_USER: demopostgresadmin
  POSTGRES_PASSWORD: demopostgrespwd
  PGOPTIONS: "-c max_connections=1000  -c shared_buffers=1024MB"
  POSTGRES_OPTIONS: "-c max_connections=1000  -c shared_buffers=1024MB"
  PG_OPTIONS: "-c max_connections=1000  -c shared_buffers=1024MB"
  MAX_CONNECTIONS: "1000"
Run Code Online (Sandbox Code Playgroud)

有状态集

apiVersion: apps/v1 …
Run Code Online (Sandbox Code Playgroud)

postgresql digital-ocean kubernetes

5
推荐指数
3
解决办法
4690
查看次数