我在仪表板上有一些面板(大约 6 个)来显示数据点图表,对 PostgreSQL 数据库的 dockerised 实例进行查询。
直到最近,面板工作正常,有些停止工作并报告如下错误:
pq:无法将共享内存段“/PostgreSQL.2058389254”调整为 12615680 字节:设备上没有剩余空间
知道这是为什么吗?如何解决这个问题。Docker 容器运行在通过ssh.
编辑
磁盘空间:
$df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 197G 140G 48G 75% /
devtmpfs 1.4G 0 1.4G 0% /dev
tmpfs 1.4G 4.0K 1.4G 1% /dev/shm
tmpfs 1.4G 138M 1.3G 10% /run
tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup
/dev/dm-16 10G 49M 10G 1% /var/lib/docker/devicemapper/mnt/a0f3c5ab84aa06d5b2db00c4324dd6bf7141500ff4c83e23e9aba7c7268bcad4
/dev/dm-1 10G 526M 9.5G 6% /var/lib/docker/devicemapper/mnt/8623a774d736ed3dc0d2db89b7d07cae85c3d1bcafc245180eec4ffd738f93a5
shm 64M 0 64M 0% /var/lib/docker/containers/260552ebcdf2bf0961329108d3d975110f8ada0a41325f5e7dd81b8ddad9d18b/mounts/shm
/dev/dm-4 10G 266M 9.8G 3% /var/lib/docker/devicemapper/mnt/6f873e62607e7cac4c4b658c72874c787b90290f74d1159eca81af61cb467cfb …Run Code Online (Sandbox Code Playgroud) 我可以确认 psycopg2 已安装(使用conda install -c anaconda psycopg2),但似乎 psycopg2 无法导入到我的 python 脚本中,或者解释器无法找到它。我也尝试使用 pip3 安装,满足要求,这意味着 psycopg2 已经安装,但无法理解为什么我的脚本无法导入它。使用 Mac (OS v10.14.4)
$ python create_tables.py
Traceback (most recent call last):
File "create_tables.py", line 1, in <module>
import psycopg2
ModuleNotFoundError: No module named 'psycopg2'
$ pip3 install psycopg2
Requirement already satisfied: psycopg2 in /usr/local/lib/python3.7/site-packages (2.8.2)
$ pip3 install psycopg2-binary
Requirement already satisfied: psycopg2-binary in /usr/local/lib/python3.7/site-packages (2.8.2)
python -V
Python 3.7.0
Run Code Online (Sandbox Code Playgroud)
知道为什么会这样吗?
编辑: create_table.py
import psycopg2
from config import config
def create_tables():
""" create …Run Code Online (Sandbox Code Playgroud) 我正在使用包含多个表的 postgres 数据库。目标是从获得的查询结果中检索格式化的 JSON。我创建了这个 python 脚本,从表(测试用例)中获取数据集,以便操作查询结果:
\n\nimport psycopg2\nimport json\nfrom time import sleep\nfrom config import config\n\ndef main():\n conn = None\n try:\n params = config()\n conn = psycopg2.connect(**params)\n cur = conn.cursor()\n cur.execute("select * from location")\n row = cur.fetchone()\n\n while row is not None:\n print(row)\n #do field rename, merge(log, lat) and obtained JSON here\n sleep(0.3)\n row = cur.fetchone()\n\n cur.close()\n except (Exception, psycopg2.DatabaseError) as error:\n print(error)\n finally:\n if conn is not None:\n conn.close()\n\nif __name__ == \'__main__\':\n main()\nRun Code Online (Sandbox Code Playgroud)\n\n为了使我的问题更清楚,我在这里制作了一个简化的场景,用 3 个表格来表示手头的任务,如下所示。
\n\nenvironment\n\xe2\x95\x94\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa6\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x97\n\xe2\x95\x91 …Run Code Online (Sandbox Code Playgroud) 我正在使用 dockerized grafana 来创建历史数据的仪表板。我在 grafana 图表面板中看不到散点图选项。
我想使用散点图来显示时间间隔范围内的数据点。我同样希望能够获取/显示选定间隔(例如 30 分钟、60 分钟等)的数据点数量。
假设我有以下数组数组:
Input = np.array([[[[17.63, 0. , -0.71, 29.03],
[17.63, -0.09, 0.71, 56.12],
[ 0.17, 1.24, -2.04, 18.49],
[ 1.41, -0.8 , 0.51, 11.85],
[ 0.61, -0.29, 0.15, 36.75]]],
[[[ 0.32, -0.14, 0.39, 24.52],
[ 0.18, 0.25, -0.38, 18.08],
[ 0. , 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ],
[ 0.43, 0. , 0.3 , 0. ]]],
[[[ 0.75, -0.38, 0.65, 19.51],
[ 0.37, 0.27, 0.52, 24.27],
[ 0. , 0. , 0. …Run Code Online (Sandbox Code Playgroud) 我不知道该怎么做,但我相信这是可行的。我有三个dataframes具有相同列定义但来自不同年份的数据集。然后,我想对数字列进行配对,逐个列并绘制来自这些dfs的数据,适当地标记数据来自的集合。目标是了解按年份比较的每一列的数据模式。
我用这两个来说明我的意思,dataframes其中数据集分别df1来自年份2018和df2年份2019:
df1
id speed accelaration jerk mode
0 1 1.94 -1.01 1.05 foot
1 1 0.93 0.04 -0.17 foot
2 3 0.50 -0.16 0.05 bike
3 3 0.57 0.05 0.19 bike
4 5 3.25 -0.13 -0.09 bus
5 5 0.50 -0.25 0.25 bus
6 5 0.25 0.10 0.25 bus
df2
id speed accelaration jerk mode
0 17 1.5 0.00 0.00 foot
1 17 1.5 0.00 …Run Code Online (Sandbox Code Playgroud) 我创建了这个函数,它接受 adataframe以返回ndarrays输入和标签。
def transform_to_array(dataframe, chunk_size=100):
grouped = dataframe.groupby('id')
# initialize accumulators
X, y = np.zeros([0, 1, chunk_size, 4]), np.zeros([0,]) # original inpt shape: [0, 1, chunk_size, 4]
# loop over each group (df[df.id==1] and df[df.id==2])
for _, group in grouped:
inputs = group.loc[:, 'A':'D'].values
label = group.loc[:, 'label'].values[0]
# calculate number of splits
N = (len(inputs)-1) // chunk_size
if N > 0:
inputs = np.array_split(
inputs, [chunk_size + (chunk_size*i) for i in range(N)])
else:
inputs = …Run Code Online (Sandbox Code Playgroud) 如何有效地将 numpy 数组数组转换为数组列表?最终,我想让 pandas 系列数组成为数据框中的列。如果有更好的办法可以直接到达,那也很好。
以下可重现的代码解决了list()或 的问题.tolist(),但在我的实际数据集上实现都太慢。我正在寻找更快的东西。
import numpy as np
import pandas as pd
a = np.array([np.array([0,1,2,3]), np.array([4,5,6,7])])
s = pd.Series(a.tolist())
s = pd.Series(list(a))
Run Code Online (Sandbox Code Playgroud)
这导致形状从a.shape = (2,4)到s.values.shape = (2,)。
我想postgres从 default调整容器的共享内存大小64M。所以我补充说:
build:
context: .
shm_size: '2gb'
Run Code Online (Sandbox Code Playgroud)
我正在使用 3.6 版的撰写文件postgres服务定义。
version: "3.6"
services:
#other services go here..
postgres:
restart: always
image: postgres:10
hostname: postgres
container_name: fiware-postgres
expose:
- "5432"
ports:
- "5432:5432"
networks:
- default
environment:
- "POSTGRES_PASSWORD=password"
- "POSTGRES_USER=postgres"
- "POSTGRES_DB=postgres"
volumes:
- ./postgres-data:/var/lib/postgresql/data
build:
context: .
shm_size: '2gb'
Run Code Online (Sandbox Code Playgroud)
但是,这种变化不会生效,即使我重新启动该服务docker-compose down,然后up。所以我立即开始与 postgres 交互以在仪表板上显示一些数据,我遇到了共享内存问题。
在仪表板吃午饭之前:
$docker exec -it fiware-postgres df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/docker-253:1-107615-1541c55e4c3d5e03a7716d5418eea4c520b6556a6fd179c6ab769afd0ce64d9f 10G …Run Code Online (Sandbox Code Playgroud) 使用docker-compose. 我想添加Plotly插件,所以我添加到我的 grafana 容器服务定义中,因此:
grafana:
restart: always
image: grafana/grafana
container_name: fiware-grafana
depends_on:
- postgres
ports:
- "3000:3000"
environment:
- plugins="crate-datasource,grafana-clock-panel,grafana-worldmap-panel,natel-plotly-panel"
volumes:
- ./grafana:/var/lib/grafana:rw
Run Code Online (Sandbox Code Playgroud)
但是,当我通过浏览器从 grafana 吃午餐时,我没有发现这个插件可用(见下图)。我在 grafana 服务中添加了 plotly 后删除了 grafana 图像并下载了新的图像,没有变化。
如何通过 docker-compose 将此插件添加到 Grafana?

编辑:
docker-compose 文件修改:
grafana:
restart: always
image: grafana/grafana
container_name: fiware-grafana
depends_on:
- postgres
ports:
- "3000:3000"
environment:
- GF_INSTALL_PLUGINS="crate-datasource,grafana-clock-panel,grafana-worldmap-panel,natel-plotly-panel"
volumes:
- ./grafana:/var/lib/grafana:rw
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------------------
fiware-cygnus /cygnus-entrypoint.sh Up (healthy) 0.0.0.0:5050->5050/tcp, 0.0.0.0:5080->5080/tcp
fiware-elasticsearch /docker-entrypoint.sh elas ... …Run Code Online (Sandbox Code Playgroud) 我有这个df:
df = pd.DataFrame(
{'loss': [0.044, 0.044, 0.038, 0.037, 0.036],
'code': ["('ac',)", "('ac', 'be')", "('ab', 'ac', 'be')",
"('ab', 'ac', 'be', 'fi')", "('ab', 'ac', 'be', 'de', 'fi')"]}
)
df
loss code
0 0.044 ('ac',)
1 0.044 ('ac', 'be')
2 0.038 ('ab', 'ac', 'be')
3 0.037 ('ab', 'ac', 'be', 'fi')
4 0.036 ('ab', 'ac', 'be', 'de', 'fi')
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个新列added-code,在该列中引入新值code。
预期成绩:
loss code added-code
0 0.044 ('ac',) ac
1 0.044 ('ac', 'be') be
2 0.038 ('ab', 'ac', 'be') …Run Code Online (Sandbox Code Playgroud) import numpy as np
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import execute
Run Code Online (Sandbox Code Playgroud)
当尝试上面的代码时,我收到以下错误:
ModuleNotFoundError Traceback(最近一次调用最后一次) in () 1 import numpy as np ----> 2 from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister 3 from qiskit importexecute
ModuleNotFoundError:没有名为“qiskit”的模块