使用impyla模块,我已经将impala查询的结果下载到pandas数据框中,完成分析,现在想将结果写回impala上的表,或者至少写入hdfs文件.
但是,我找不到有关如何执行此操作的任何信息,甚至无法找到如何ssh到impala shell并从那里写表.
我想做什么:
from impala.dbapi import connect
from impala.util import as_pandas
# connect to my host and port
conn=connect(host='myhost', port=111)
# create query to save table as pandas df
create_query = """
SELECT * FROM {}
""".format(my_table_name)
# run query on impala
cur = conn.cursor()
cur.execute(create_query)
# store results as pandas data frame
pandas_df = as_pandas(cur)
cur.close()
Run Code Online (Sandbox Code Playgroud)
一旦我完成了pandas_df需要做的任何事情,将这些结果作为表保存回impala.
# create query to save new_df back to impala
save_query = """
CREATE TABLE new_table AS
SELECT *
FROM pandas_df
""" …
Run Code Online (Sandbox Code Playgroud) 我的 T-SQL 代码低于我在 Pyspark 中转换的代码,但给了我错误
CASE
WHEN time_on_site.eventaction = 'IN' AND time_on_site.next_action = 'OUT' AND time_on_site.timespent_sec < 72000 THEN 1 -- 20 hours
WHEN time_on_site.eventaction = 'IN' AND time_on_site.next_action = 'OUT' AND time_on_site.timespent_sec >= 72000 THEN 0
WHEN time_on_site.eventaction = 'IN' AND time_on_site.next_action = 'IN' AND time_on_site.timespent_sec <= 28800 THEN 2 -- 8 hours
WHEN time_on_site.eventaction = 'IN' AND time_on_site.next_action = 'IN' AND time_on_site.timespent_sec > 28800 THEN 3
WHEN time_on_site.type_flag = 'TYPE4' THEN 4
ELSE NULL
END AS "type"
Run Code Online (Sandbox Code Playgroud)
下面是我的 …
DESeq
我正在尝试使用从命令行输入的参数在 RScript 中运行。我曾经optparse
解析用户参数并尝试将设计参数传递到函数中DESeqDataSetFromMatrix()
。
我直接测试了这个功能,效果很好:
DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=~taxonomy)
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试传递变量opt$design
(这是一个字符串=“~taxonomy”),我会收到以下错误:
DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=opt$design)
Run Code Online (Sandbox Code Playgroud)
错误:$ 运算符对于原子向量无效执行停止
我尝试过/noquote()
的各种组合并将整个命令创建为字符串以传递给函数,但没有任何效果。任何建议将不胜感激。cat
paste
DESeqDataSetFromMatrix()
感谢 Ben Bolker 下面的回答,以下方法有效:
DESeq_tbl <- DESeqDataSetFromMatrix(countData=counts_tbl,
colData=coldata, design=as.formula(opt$design))
Run Code Online (Sandbox Code Playgroud) 使用 Pandas,我需要为每个 groupby 对象取回具有最大计数的行。
我有一个名为“匹配”的数据框,如下所示:
FeatureID gene pos
0 1_1_1 KRAS_1 6
1 1_1_1 KRAS_2 8
2 1_1_1 KRAS_3 11
3 1_1_1 NRAS_1 3
4 1_1_1 NRAS_2 11
5 1_1_1 NRAS_3 84
6 1_1_10 KRAS_1 4
7 1_1_10 KRAS_2 3
8 1_1_10 KRAS_3 14
9 1_1_10 NRAS_1 4
10 1_1_10 NRAS_2 6
11 1_1_10 NRAS_3 83
我需要按 FeatureID 将数据框组合在一起,然后获取每组中的位置计数:
matches.groupby(["FeatureID", "gene"]).count()
Run Code Online (Sandbox Code Playgroud)
结果是:
FeatureID gene
1_1_1 KRAS_1 6
KRAS_2 8
KRAS_3 11
NRAS_1 3
NRAS_2 11
NRAS_3 84 …