我正在尝试用 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 同时工作?
有没有办法根据数据作业的大小动态扩展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
我有一个现有的 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 空间已用完。
我检查了 DBeaver 快捷方式文档页面并用 Google 搜索了很多,但找不到任何关于此的信息...
DBeaver是否有Ctrl+D
等效的(我指的Ctrl+D
是 VS Code,它通过添加当前选择来进行多选)?
背景
我经常使用 BigQuery,在 BigQuery Console 和 VS Code 中,它们都具有 Ctrl+D 功能,但在 DBeaver 中没有(至少默认情况下没有相同的热键)
我正在尝试通过使用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 中生成 uuid,我注意到有冲突。如果我使用uuid.uuid1()
或 ,我会发生冲突uuid.uuid4()
。
我在网上阅读了很多文章,但他们详细阐述了如果生成正确,UUID 碰撞是不可能的“理论”。
但是我还没有找到一个解释我如何确保我的UUID 生成正确完成的。
我以前怎么能这样做Python 3.7
?
我看到Python 3.7 有一个 UUID 安全的概念,但是有没有办法在 3.7 之外做到这一点?
详情:
在 Ubuntu 18.04 上运行,在 Jupyter Lab 中运行 Python 代码。
我有一个Kubernetes服务,通过这样做选择:
spec:
selector:
backend: nlp-server
Run Code Online (Sandbox Code Playgroud)
如果有多个Pods
匹配选择器,那请求Pod
的Service
路由?
我正在使用默认ClusterIP
设置.搜索"ClusterIP:在集群内部IP上公开服务.选择此值使服务只能从集群中访问.这是默认的ServiceType." 在文档中
如果我希望服务路由到有意义的Pod(负载较小),
那么内部负载均衡器是我需要的吗?
如果需要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半成品服务的时间。
我正在使用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
,但仍然重复出现相同的警告消息。
如何禁用此警告?
kubernetes ×3
python ×3
python-3.x ×2
amazon-eks ×1
apache-beam ×1
apache-spark ×1
dbeaver ×1
jinja2 ×1
python-click ×1
uuid ×1