小编cry*_*bhu的帖子

同时使用 Python f-strings 和 Jinja

我正在尝试用 Python 编写一个简洁的 SQL 查询字符串,以同时使用 f-strings 和 Jinja。
背景信息:我正在编写一个在 Airflow 中使用的查询。

这不起作用:

query_string = f"""
        SELECT
            COUNT(DISTINCT case_id) AS counts
        FROM
            `{{var.value.gcp_project}}.{{var.value.dataset_prefix}}user.person`
        WHERE
            identified_on = PARSE_DATE('%Y-%m-%d', '{YESTERDAY_DATE_STR}')
           """
Run Code Online (Sandbox Code Playgroud)

它产生的查询字符串为:

SELECT
    COUNT(DISTINCT case_id) AS counts
FROM
    `{var.value.gcp_project}.{var.value.dataset_prefix}user.person`
WHERE
    identified_on = PARSE_DATE('%Y-%m-%d', '2020-09-07')
Run Code Online (Sandbox Code Playgroud)

所以它做了 f-string 值替换而不是 Jinja。

如何让 f-strings 和 Jinja 同时工作?

python jinja2 python-3.x

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

根据数据作业的大小启动kubernetes pod内存

有没有办法根据数据作业的大小动态扩展Pod的内存大小(我的用例)?

目前我们有使用内存量定义的Job和Pod,但我们不知道给定时间片(有时1000行,有时100,000行)的数据有多大.
因此,如果数据大于我们事先分配的内存,它将会中断.

我曾想过按数据量使用切片,即每10,000行切一次,我们就知道处理固定行数的内存需求.但我们正试图按时间聚合,因此需要时间片.

或任何其他解决方案,如Spark on kubernetes?

另一种看待它的方式:
我们如何在AWS上的Kubernetes中实现Cloud Dataflow

apache-spark kubernetes apache-spark-sql google-cloud-dataflow apache-beam

5
推荐指数
1
解决办法
276
查看次数

增加现有 GKE 集群的 IP 空间

我有一个现有的 GKE 集群,它是从 Terraform 中的一些配置创建的,我从 GitHub 的教程中获得。

集群有一个包含 3 个节点的默认节点池。

我尝试通过 GKE 控制台添加另一个具有 3 个节点的节点池,
但是当我这样做时,kubectl get nodes我只看到 4 个节点,而不是 6 个。

当我通过gcloud命令行尝试相同时,
我记得由于 IP 空间而看到一条消息。

由于 IP 空间,我似乎不能有 6 个节点。
如何更改现有集群的 IP 空间?
我对此进行了一些研究,似乎无法为 GKE 中的现有集群更改它?
那么如何以及在哪里可以为新集群设置此 IP 空间?

更新
我在 GCP 的通知中发现了错误消息:

(1) 部署错误:并非所有实例都在 19.314823406s 之后在 IGM 中运行。预期 1. 当前错误:[IP_SPACE_EXHAUSTED]:实例 '--6fa3ebb6-cw6t' 创建失败:'projects//regions/us-east4/subnetworks/-pods-4851bf1518184e60' 的 IP 空间已用完。(2) 部署错误:并非所有实例在 19.783096708s 之后都在 IGM 中运行。预期 1. 当前错误:[IP_SPACE_EXHAUSTED]:实例 '-spec--bf111c8e-h8mm' 创建失败:'projects//regions/us-east4/subnetworks/-pods-4851bf1518184e60' 的 IP 空间已用完。

google-kubernetes-engine

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

DBeaver 中的 Ctrl+D 等效键

我检查了 DBeaver 快捷方式文档页面并用 Google 搜索了很多,但找不到任何关于此的信息...

DBeaver是否有Ctrl+D等效的(我指的Ctrl+D是 VS Code,它通过添加当前选择来进行多选)?

背景
我经常使用 BigQuery,在 BigQuery Console 和 VS Code 中,它们都具有 Ctrl+D 功能,但在 DBeaver 中没有(至少默认情况下没有相同的热键)

dbeaver

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

测试 Python Click 命令异常

我正在尝试通过使用Click 包实现的命令来测试异常的引发。

这是我的命令:

@click.option(
    '--bucket_name',
...)
@click.option(
    '--group_id',
...)
@click.option(
    '--artifact_id',
...)
@click.option(
    '--version',
...)
@click.option(
    '--artifact_dir',
    required=False,
    default='downloads/artifacts/',
...)
@click.command()
def download_artifacts(
    bucket_name,
    group_id, artifact_id, version,
    artifact_dir
):
    logger.info(
        f"bucket_name: {bucket_name}, "
        f"group_id: {group_id}, "
        f"artifact_id: {artifact_id}, "
        f"version: {version}, "
        f"artifact_dir: {artifact_dir}, "
        )

    if not artifact_dir.endswith('/'):
        raise ValueError(
            "Enter artifact_dir ending with '/' ! artifact_dir: "
            f"{artifact_dir}")
...
Run Code Online (Sandbox Code Playgroud)

这是我的测试代码,assertRaises它不起作用:

def test_download_artifacts_invalid_dir(
        self,
    ):
        runner = CliRunner()
        with self.assertRaises(ValueError):
            result = runner.invoke(
                download_artifacts,
                '--bucket_name my_bucket …
Run Code Online (Sandbox Code Playgroud)

python command-line-interface python-unittest python-click

4
推荐指数
1
解决办法
3852
查看次数

防止Python同一进程中的uuid冲突

我在 Python 中生成 uuid,我注意到有冲突。如果我使用uuid.uuid1()或 ,我会发生冲突uuid.uuid4()

我在网上阅读了很多文章,但他们详细阐述了如果生成正确,UUID 碰撞是不可能的“理论”

但是我还没有找到一个解释我如何确保我的UUID 生成正确完成的

我以前怎么能这样做Python 3.7
我看到Python 3.7 有一个 UUID 安全的概念,但是有没有办法在 3.7 之外做到这一点?

详情:
在 Ubuntu 18.04 上运行,在 Jupyter Lab 中运行 Python 代码。

python uuid python-3.x

3
推荐指数
1
解决办法
3068
查看次数

kubernetes服务如何决定要路由到哪个后端pod

我有一个Kubernetes服务,通过这样做选择:

spec: 
  selector: 
    backend: nlp-server
Run Code Online (Sandbox Code Playgroud)

如果有多个Pods匹配选择器,那请求PodService路由?

我正在使用默认ClusterIP设置.搜索"ClusterIP:在集群内部IP上公开服务.选择此值使服务只能从集群中访问.这是默认的ServiceType." 在文档中

如果我希望服务路由到有意义的Pod(负载较小),
那么内部负载均衡器是我需要的吗?

kubernetes kubernetes-service

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

如果需要CloudFormation,EKS会做什么?

如果需要CloudFormation中的大量配置(又是另一项AWS服务),AWS的Elastic Kubernetes服务(EKS)到底能做什么

我在(https://docs.aws.amazon.com/eks/latest/userguide/eks-ug.pdf)中的文档中遵循了《 AWS EKS入门》,在这里看来,运行EKS 十分需要CloudFormation知识。
我误会了吗?

因此,除了学习Kubernetes .yaml清单定义之外,要在EKS上运行k8,AWS还希望您也学习其CloudFormation .yaml配置清单(都是PascalCase,而不是我可能添加的k8s camelCase)?

我知道EKS会对k8的最新版本和控制平面进行一些管理,并且“默认情况下是安全的”,但除此之外吗?

那么,为什么我不立即使用kops在AWS上运行k8s,并处理稍微过时的k8s版本呢?
还是我应该做EKS + CloudFormation + kops,到那时GKE看起来是一个非常诱人的选择?

更新:
在这一点上,我真的认为EKS在详细搜索了EKS以及它如何如此依赖CloudFormation清单之后,只是CloudFormation的一个薄包装。
GKE可能是对k8令人震惊的受欢迎程度的一种商业回应,总体而言,GKE没有任何实质性支持。
希望这可以帮助节省任何人评估EKS半成品服务的时间。

amazon-web-services kubernetes amazon-eks

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

在 GCP 脚本中使用最终用户凭据时禁用警告

我正在使用Python 客户端库运行一些脚本来在 GCP 中执行一些临时作业。
这些是临时的,因此我相信它们应该在我的最终用户凭据而不是服务帐户上运行。

我不断看到此警告,这使得调试我的脚本标准输出变得困难:

UserWarning: Your application has authenticated using end user credentials from Google Cloud SDK without a quota project. You might receive a "quota exceeded" or "API not enabled" error. We recommend you rerun `gcloud auth application-default login` and make sure a quota project is added. Or you can use service accounts instead. For more information about service accounts, see https://cloud.google.com/docs/authentication/
Run Code Online (Sandbox Code Playgroud)

我执行了建议的操作gcloud auth application-default login,但仍然重复出现相同的警告消息。

如何禁用此警告?

google-cloud-platform

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