因此,我正在使用AWS Glue自动生成的代码从S3读取csv文件,并将其通过JDBC连接写入表中。看起来很简单,Job成功运行,没有任何错误,但是它什么也没写。当我检查Glue Spark动态框架时,它会显示所有行(使用.count())。但是,当对其执行.show()时,不会产生任何结果。
.printSchema()工作正常。尝试在使用.show()时记录错误,但没有错误或未打印任何内容。使用.toDF及其有效的show方法将DynamicFrame转换为数据帧。我以为文件有问题,试图缩小到某些列。但是即使文件中只有2列,也是一样。用双引号清楚标记字符串,仍然没有成功。
我们有需要从Glue配置中选择的诸如JDBC连接之类的东西。我猜常规的Spark数据框架无法做到。因此需要动态框架。
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.job import Job
from awsglue.dynamicframe import DynamicFrame
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
glueContext = GlueContext(SparkContext.getOrCreate())
spark = glueContext.spark_session
datasource0 = glueContext.create_dynamic_frame.from_options('s3', {'paths': ['s3://bucket/file.csv']}, 'csv', format_options={'withHeader': True,'skipFirst': True,'quoteChar':'"','escaper':'\\'})
datasource0.printSchema()
datasource0.show(5)
Run Code Online (Sandbox Code Playgroud)
输出量
root
|-- ORDERID: string
|-- EVENTTIMEUTC: string
Run Code Online (Sandbox Code Playgroud)
这是转换为常规数据帧所产生的结果。
datasource0.toDF().show()
Run Code Online (Sandbox Code Playgroud)
输出量
+-------+-----------------+
|ORDERID| EVENTTIMEUTC|
+-------+-----------------+
| 2| "1/13/2018 7:50"|
| 3| "1/13/2018 7:50"|
| 4| "1/13/2018 …Run Code Online (Sandbox Code Playgroud) 我们正在使用 alembic 来应用 DB 修订版。我已经配置了连接并且它按预期工作,只是我无法使用我们的客户记录器。
我们有自己的记录器类(派生自 Python 日志记录),它在整个应用程序中使用,我希望 alembic 使用它而不是默认值。
有什么办法可以将我们类的记录器对象传递给它吗?我希望它使用自定义记录器中定义的格式和处理程序打印自己的日志。
我试过,
环境文件
from sqlalchemy import engine_from_config
from sqlalchemy import pool
from alembic import context
from tools.logger import Logger
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
# Interpret the config file for Python logging.
# This line sets up loggers basically.
if config.attributes.get('configure_logger', True):
fileConfig(config.config_file_name)
logger = Logger('alembic.env')
Run Code Online (Sandbox Code Playgroud)
我的剧本
self.alembic_cfg = alembic_config(self.alembic_ini_path, attributes={'configure_logger': False}) …Run Code Online (Sandbox Code Playgroud) 我有一个 python 字典,其中键作为日期,值作为元组,如下所示。
dct = {'01/24/2017 01:10:23.1230':('a',12),
'12/25/2016 10:12:45.128':('b',23),
'11/16/2016 09:39:55.459':('c',45),
'01/12/2017 15:55:20.783':('d',34)}
Run Code Online (Sandbox Code Playgroud)
想要将其写入具有常量(userid)的数据帧中,如下所示。
userid Date value1 value2
0 123 '01/24/2017 01:10:23.1230' a 12
1 123 '12/25/2016 10:12:45.128' b 23
2 123 '11/16/2016 09:39:55.459' c 45
3 123 '01/12/2017 15:55:20.783' d 34
Run Code Online (Sandbox Code Playgroud)
尝试将字典转换为列表或 numpy 数组以写入 Dataframe,但字典中的元组,我无法将它们分开。有任何想法吗?
我从另一台机器导入了anaconda环境。我想将导入环境中的软件包安装到根目录中,或者将导入环境设置为默认环境。有什么方法可以1.将所有软件包从一个环境导入到另一个环境?或2.使用非根环境作为默认环境?
注意:两种环境都适用于python 2.7。
我在 Pandas 数据框中有一列时间戳格式,并希望将唯一日期(无时间)提取到列表中。我试过以下方法并不奏效,
1. dates = datetime.datetime(df['EventTime'].tolist()).date()
2. dates = pd.to_datetime(df['EventTime']).date().tolist()
3. dates = pd.to_datetime(df['EventTime']).tolist().date()
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
所以我有这个数据框(如下所示),我试图通过将其复制到另一个df中来加入自身。加盟条件如下;加盟条件:
期待中
PERSONID Badge_ID Reader_ID1_x SITE_ID1_x EVENT_TS1_x Reader_ID1_y SITE_ID1_x EVENT_TS1_y
2553-AMAGID 4229 141 99 2/1/2016 3:26 145 97 2/1/2016 3:29
2553-AMAGID 4229 248 99 2/1/2016 3:26 145 97 2/1/2016 3:29
2553-AMAGID 4229 145 97 2/1/2016 3:29 251 99 2/1/2016 3:29
2553-AMAGID 4229 145 97 2/1/2016 3:29 291 99 2/1/2016 3:29
Run Code Online (Sandbox Code Playgroud)
这是我很累的事情,请复制df,然后按如下所示的条件过滤每个df,然后再次将它们重新加入。但是以下条件不起作用:(我在读入df之前尝试了SQL中的此过滤器,但是对于600k +行,带有索引的事件,这太慢了。
df1 = df1[(df1['Badge_ID']==df2['Badge_ID']) and (df1['SITE_ID1']!=df2['SITE_ID1']) and ((df1['EVENT_TS1']-df2['EVENT_TS1'])<=datetime.timedelta(hours=event_time_diff))]
PERSONID Badge_ID Reader_ID1 SITE_ID1 EVENT_TS1
2553-AMAGID 4229 141 99 2/1/2016 3:26:10 AM
2553-AMAGID 4229 248 99 2/1/2016 3:26:10 …Run Code Online (Sandbox Code Playgroud) 我试图在 Windows 上编译 Cython 文件 (.pyx),这是我刚从 .py 保存的文件。这是我的项目目录路径。
c:\..\Project\App\Analyzer\
_init_.py
Few_other_files.py
consolidated_loop_C.pyx
cl_setup.py
Run Code Online (Sandbox Code Playgroud)
这是我的 cl_setup.py
from Cython.Build import cythonize
try:
from setuptools import setup
from setuptools import Extension
except ImportError:
from distutils.core import setup
from distutils.extension import Extension
setup(
name = "Consolidated Loop",
ext_modules = cythonize("consolidated_loop_C.pyx")
)
Run Code Online (Sandbox Code Playgroud)
我正在使用以下语句在同一文件夹中进行编译。
python cl_setup.py build_ext --inplace
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误。我的猜测是我缺少 cythonize() 的某些参数,试图在没有任何运气的情况下进行研究。