<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[euler1983的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/euler1983</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; euler1983]]></copyright><item><title><![CDATA[python concat报错：plan shapes are not aligned]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/128834059</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/128834059</guid><author>euler1983</author><pubDate>Wed, 01 Feb 2023 14:58:45 +0800</pubDate><description><![CDATA[python将两个dataframe上下拼接到一起时，报错：“plan shapes are not aligned”然后又检查了下代码，发现对第二个dataframe调整了字段的格式，从string变成了float。所以两个dataframe要做concat，不仅字段名称应该完全相同，字段格式也应该完全相同。仔细查看了两个dataframe的columns，完全相同。]]></description><category></category></item><item><title><![CDATA[通过python获取finebi中的仪表板的token]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/128396934</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/128396934</guid><author>euler1983</author><pubDate>Wed, 21 Dec 2022 14:50:39 +0800</pubDate><description><![CDATA[第二种是通过python获取finebi的token，从而可以获取所有API的应用。（例如查看目前所有的仪表板）通过python可以构建比较复杂的web 应用，所以二者结合，可以在python的web应用中嵌入炫酷的大屏。有了该Token后，就可以解锁所有的API了。finebi（帆软）是一个BI工具，可以实现无代码的大屏展示，效果很棒。第一种是创建仪表板的公共链接。然后将该连接嵌入到web应用中进行跳转。有两种做法可以实现这个效果。]]></description><category></category></item><item><title><![CDATA[使用mingw执行git diff遇到中文乱码的问题]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/128083181</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/128083181</guid><author>euler1983</author><pubDate>Mon, 28 Nov 2022 17:07:54 +0800</pubDate><description><![CDATA[【代码】使用mingw执行git diff遇到中文乱码的问题。]]></description><category></category></item><item><title><![CDATA[使用二阶动态规划解决方格取数]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/127776054</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/127776054</guid><author>euler1983</author><pubDate>Wed, 09 Nov 2022 20:56:03 +0800</pubDate><description><![CDATA[采用2维动态规划方法解决方格取数]]></description><category></category></item><item><title><![CDATA[python split()小trick]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/127596391</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/127596391</guid><author>euler1983</author><pubDate>Sun, 30 Oct 2022 10:41:33 +0800</pubDate><description><![CDATA[python中的split()技巧]]></description><category></category></item><item><title><![CDATA[linux下oracle服务器打开允许远程连接]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/125438361</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/125438361</guid><author>euler1983</author><pubDate>Fri, 24 Jun 2022 08:11:35 +0800</pubDate><description><![CDATA[环境：linux，oracle服务器，使用docker里的python访问oracle数据库。报错：ORA-12541:TNS:no listener 排查：su - oracle切换成oracle用户后，用sqlplus可以连接到数据库，说明数据库本身是没问题的。运行：lsnrctl status，发现监听终端是localhost。明白了，这是限制了远程连接。解决方法：修改配置服务端listener.ora，加上HOST=0.0.0.0，如果不加，默认只能运行在本机的程序才能访问。LISTENER =
(]]></description><category></category></item><item><title><![CDATA[在oracle中新建一个空的列的避坑]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/125262578</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/125262578</guid><author>euler1983</author><pubDate>Mon, 13 Jun 2022 16:34:26 +0800</pubDate><description><![CDATA[在oracle中新建一些空列]]></description><category></category></item><item><title><![CDATA[解决docker里matplotlib和plotly画图以及保存图片时中文乱码的问题]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/125250818</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/125250818</guid><author>euler1983</author><pubDate>Sun, 12 Jun 2022 22:23:20 +0800</pubDate><description><![CDATA[解决docker里jupyter中文乱码的问题]]></description><category></category></item><item><title><![CDATA[利用streamlit搭建个人文档管理系统]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/125016882</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/125016882</guid><author>euler1983</author><pubDate>Sat, 28 May 2022 12:42:06 +0800</pubDate><description><![CDATA[1. 安装docker版的mongodb


docker pull mongo

然后参考https://www.runoob.com/docker/docker-install-mongodb.html

启动docker image。

我使用的命令是：


docker run -name my-mongo --restart=always -p 27017:27017 -d -v /home/mongodb/datadb:/data/db mongo:latest --auth




2. mo]]></description><category></category></item><item><title><![CDATA[streamlit部署发布应用]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/124910851</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/124910851</guid><author>euler1983</author><pubDate>Sun, 22 May 2022 19:19:56 +0800</pubDate><description><![CDATA[streamlit很好用，可以快速搭建app。

更有趣的是，还可以发布应用，真是一站式解决方案啊。

今天尝试了一把，流程简单，非常nice。

1. 代码传到github

1.1 首先在github上建立账号，然后在本机上安装git类的工具。本人是linux系统，直接apt-get install git即可。

1.2 使用github的账号在本机生成ssh-gen，参考：Connecting to GitHub with SSH - GitHub Docs





将id_ed25519.pu.]]></description><category></category></item><item><title><![CDATA[解决streamlit-multipage的报错]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/124906804</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/124906804</guid><author>euler1983</author><pubDate>Sun, 22 May 2022 09:32:55 +0800</pubDate><description><![CDATA[最近开始入行streamlit，用起来不要太爽，终于可以完全基于python从后端的数据处理到前端的可视化展示一条龙搞起来，大大加快了单兵生产力的产出。

streamlit本身是个单app的应用，背后是一个脚本从头到脚跑一遍。

于是出现了很多扩展应用，在streamlit的基础上扩展成多app的应用，今天试用了一下streamlit-multipage，可以做成多page的app，其实也没啥神秘的，本质就是通过pickle把一个页面的数据写成文件，再从另外一个页面加载的方式来实现页面之间的通信。



]]></description><category></category></item><item><title><![CDATA[基于streamlit的表格展示-完美解决方案]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/124778547</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/124778547</guid><author>euler1983</author><pubDate>Sun, 15 May 2022 10:08:04 +0800</pubDate><description><![CDATA[问题

用streamlit开发web app非常实用。但是streamlit的表格展示非常不友好，只有两个简单的接口函数：st.table(df)和st.dataframe(df)。

对于字段稍微比较多的dataframe显示效果相当不友好。

st.table(df)会展开所有字段，st.dataframe(df)会压缩到一起，字段名称看不清楚。

主要局限为：

1. 不能控制每个列的宽度。虽然接口里有width和height两个参数，但是亲测不太管用。

2. 行数多的时候，会一直在页面上往下排列]]></description><category></category></item><item><title><![CDATA[docker非正常退出后，重启时报错error adding seccomp filter rule for syscall clone3]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/124778193</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/124778193</guid><author>euler1983</author><pubDate>Sun, 15 May 2022 09:05:21 +0800</pubDate><description><![CDATA[问题

电脑合盖后，没有待机，电源耗尽关机。里边运行的docker没有正常退出，再开机时，容器启动不起来了，报错如下：

docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "error adding seccomp filter rule for syscall clone3: permission denied": ]]></description><category></category></item><item><title><![CDATA[spark中使用uuid：一不小心就会掉坑里]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/124719639</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/124719639</guid><author>euler1983</author><pubDate>Wed, 11 May 2022 22:16:39 +0800</pubDate><description><![CDATA[背景

项目使用pyspark开发一个大数据的程序，读入hive数据，各种运算后，得到一些结果写回到hive。

程序中，有一步是调用uuid生成一个32位的唯一ID。

df = df.withColumn('uuid', F.udf(lambda x: str(x.uuid1())))

然后紧接着使用这个uuid作为外键，先groupby，然后与df进行了一次关联。





问题

上面的第2步，竟然关联不上。

这就奇怪了，明明是用的同样的字段进行关联，没理由啊。

后来看了下两个表，uuid的值]]></description><category></category></item><item><title><![CDATA[spark中的资源配置总结]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/124607871</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/124607871</guid><author>euler1983</author><pubDate>Fri, 06 May 2022 13:14:34 +0800</pubDate><description><![CDATA[spark中有太多的概念，有时候会分辨不清。

比如，什么是worker？什么是executor？

每个worker有多少CPU核？是否设置得合理？

要回答这些问题，首先要理解，spark-env.sh中的worker的配置是表示该worker能拿到的总资源。



如图所示，设置SPARK_WORKER_CORES=4，代表每个worker的总CPU资源是4个逻辑核。

worker就像是一个部门经理，握有资源，手下有具体干活的小弟：executors。

根据手里资源的多少，可以决定招多少个小弟。
]]></description><category></category></item><item><title><![CDATA[不重启容器的情况下添加或者删除端口]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/124255464</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/124255464</guid><author>euler1983</author><pubDate>Mon, 18 Apr 2022 17:54:23 +0800</pubDate><description><![CDATA[通常对已经启动的容器添加端口需要先停止容器，然后修改启动脚本，再重新restart。

但是有一种方法可以利用iptable在不重启容器的情况下，增加端口。



增加端口

add_port.sh


echo $1
echo $2
iptables -t nat -A DOCKER ! -i docker_gwbridge -p tcp -m tcp --dport $2 -j DNAT --to-destination $1:$2
iptables -t nat -A POSTROUTING -s $]]></description><category></category></item><item><title><![CDATA[pyspark 报错：local class incompatible的解决方法]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/123843631</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/123843631</guid><author>euler1983</author><pubDate>Wed, 30 Mar 2022 13:08:59 +0800</pubDate><description><![CDATA[1. 总结

如果使用jupyter以standalone方式调试pyspark程序时，务必要保持driver端的pyspark版本与hadoop里的pyspark版本一致。



2. 具体问题

使用pyspark程序，如果报错类似：


local class incompatible: stream classdesc serialVersionUID = -3328732449542231715, local class serialVersionUID = 4416556597546473068]]></description><category></category></item><item><title><![CDATA[hive数据从一个主机迁移到另外一个主机]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/123651647</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/123651647</guid><author>euler1983</author><pubDate>Tue, 22 Mar 2022 09:06:32 +0800</pubDate><description><![CDATA[hive数据的迁移可以通过HDFS数据导出再导入的方法。

1. 从hive导出表到HDFS数据


export table 表名字 to'/xxx/'

2. 将HDFS数据复制到本地


hdfs dfs -copyToLocal /xxx .  

3. 将HDFS数据下载并上传到另外一台服务器的HDFS上


hdfs dfs -copyFromLocal xxx/ /

4. 将HDFS数据import到hive上


import table 表名 from '/xxx/表名';



由于.]]></description><category></category></item><item><title><![CDATA[python multiIndex 操作攻略]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/123464010</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/123464010</guid><author>euler1983</author><pubDate>Sun, 13 Mar 2022 19:34:34 +0800</pubDate><description><![CDATA[python pivot操作后，会出现multiIndex的dataframe。

这种dataframe的切片取值和条件取值，与普通的dataframe还是有些区别的。

1. 准备数据


import pandas as pd
df = pd.DataFrame({'class':['A','A','A','B','B','B','C','C'],
                   'id':['a','b','c','a','b','c','a','b'],
                  ]]></description><category></category></item><item><title><![CDATA[docker中的jupyter设置启动密码]]></title><link>https://blog.youkuaiyun.com/euler1983/article/details/123460793</link><guid>https://blog.youkuaiyun.com/euler1983/article/details/123460793</guid><author>euler1983</author><pubDate>Sun, 13 Mar 2022 16:09:42 +0800</pubDate><description><![CDATA[针对docker中已经安装了jupyter的情况下，通常会在启动容器时设置自动启动jupyter notebook，例如：


docker run -it -d -m 20G --memory-swap -1 --restart=always --name myai  -p 8888:8888 -v /home/xxx/:/usr/src/app python1.3 jupyter notebook --ip=0.0.0.0 --port=8888 --allow-root


执行脚本把容器run起来后]]></description><category></category></item></channel></rss>