在MS Excel中,我想格式化一个数字,以便只显示数千并且从中显示'K',因此数字123000将在单元格中显示为123K
格式化很容易只显示数千(123),但我想添加K符号,以防数字大于1000.所以一个数字123的单元格将显示123 一个单元格,123000将显示123K
知道如何使用格式Cell - >自定义过滤器吗?
谢谢!
我在我的python项目中使用atom IDE.在某些情况下有自动完成的建议,但我想知道是否可以列出导入模块具有的所有可能功能,例如,如果我在输入import urllib
时导入
urlib.并按(ctrl + tab)查看包含可能的函数/方法的列表.
那可能吗?谢谢
我的DataFrame具有以下结构:
-------------------------
| Brand | type | amount|
-------------------------
| B | a | 10 |
| B | b | 20 |
| C | c | 30 |
-------------------------
Run Code Online (Sandbox Code Playgroud)
我希望通过分组减少行数,type并将其amount放入一个类型的单个列中:Map
因此,Brand它将是唯一的,并且对于每个组合MAP_type_AMOUNT都有.key,valuetype amount
我认为Spark.sql可能有一些函数来帮助这个过程,或者我是否必须让RDD成为DataFrame并将我自己的"转换"转换为map类型?
预期:
-------------------------
| Brand | MAP_type_AMOUNT
-------------------------
| B | {a: 10, b:20} |
| C | {c: 30} |
-------------------------
Run Code Online (Sandbox Code Playgroud) 我有一个外部表,从HDFS位置(/ user/hive/warehouse/tableX)读取所有文件的数据,并在Hive中创建一个外部表.
现在,让我们假设有数据的某些预分区和所有以前的文件在几个目录与特定的命名约定吐尽< DIR_NAME > _ < incNumber >如
/user/hive/warehouse/split/
./dir_1/files...
./dir_2/files...
./dir_n/files...
Run Code Online (Sandbox Code Playgroud)
如何创建另一个外部表来跟踪拆分文件夹中的所有文件?
我是否需要创建一个在每个子文件夹(dir_x)上分区的外部表?
同样,它需要某种Hive或shell脚本,可以为每个子目录创建/添加一个分区吗?
我有一个固定数量的形式的int数组:
[a,b,c,d,e]
Run Code Online (Sandbox Code Playgroud)
例如:
[2,2,1,1,2]
Run Code Online (Sandbox Code Playgroud)
其中a和b可以是整数0至2,c并且d可以是0或1,并且e可以是整数0至2.
因此有:3 * 3 * 2 * 2 * 3:108这种形式的可能的阵列.
我想为每个数组分配一个0到107的唯一整数代码.
我被卡住了,我想添加数组中的每个数字,但是两个数组如:
[0,0,0,0,1] and [1,0,0,0,0]
Run Code Online (Sandbox Code Playgroud)
都会加1.
有什么建议吗?
谢谢.
我已经配置了气流并创建了一些调用几个运算符的Dags和subDag.
我的麻烦是当操作员运行并完成工作时,我希望以某种python结构返回结果.例如:
File1.py
...
...
sub_dag_one=SubDagOperator(subdag=subdag_accessHive(
PARENT_DAG_NAME, CHILD_DAG_NAME, default_args, STEP, macros,path,
),
task_id=DELP_DAG_NAME,
dag=dag,
)
Run Code Online (Sandbox Code Playgroud)
File2.py
from airflow import DAG
from airflow.operators import HiveOperator
def subdag_callHive(parent, child, args, step,
user_defined_macros, path
):
dag_subdag = DAG(
dag_id='%s.%s' % (parent, child),
default_args=args,
schedule_interval="@daily",
template_searchpath=path,
user_defined_macros=user_defined_macros,
)
# some work...
HiveOperator(
task_id='some_id',
hiveconf_jinja_translate=True,
hql='select field1 from public.mytable limit 4;',
trigger_rule='all_done',
dag=dag_subdag,
)
return dag_subdag
Run Code Online (Sandbox Code Playgroud)
函数subdag_callHive是从另一个python脚本调用的,其中定义了主Dag并且需要所有其他参数.
我只是需要能够从HiveOperator(*select*from public.mytable limit 4;*)获得结果,在这种情况下将是4个值.
返回的dag_subdag是一个对象<class'airflow.models.DAG'>并包含传递给调用的所有属性/数据,但没有关于HiveOperator所做的事情的信息.
这可能吗?如果是这样,它怎么能完成.
在我的脚本开始时,我设置了一个变量DATE,我需要在脚本的不同部分以不同的格式使用它。
我的问题是使用相同的变量,但以不同的方式对其进行格式化:
#!/bin/bash
DATE=$(date +%s)
echo "date in timestamp format: $DATE"
echo "..."
# some other actions that need time...
echo "date start at: $(date $(DATE +%Y-%m-%d:%H:%M))"
Run Code Online (Sandbox Code Playgroud)
这运行但输出错误(日期:未找到命令):
date in timestamp format: 1490884719
...
<script>.sh: line 6: DATE: command not found
date start at: Thu Mar 30 16:38:40 CEST 2017
Run Code Online (Sandbox Code Playgroud)
我如何摆脱错误?
我已经下载了 python 3.6.1,我正在尝试使用终端来设置beautifulsoup4,但它一直试图在 python 2.7 上安装。有什么帮助吗?
Jakes-iMac:beautifulsoup4-4.5.3 Jake$ cd /Users/Jake/Downloads/beautifulsoup4-4.5.3 Jakes-iMac:beautifulsoup4-4.5.3 Jake$ python setup.py install running install
检查 .pth 文件支持 /Library/Python/2.7/site-packages/
error: can't create or remove files in install directory
Run Code Online (Sandbox Code Playgroud)
尝试添加或删除安装目录中的文件时出现以下错误:
Run Code Online (Sandbox Code Playgroud)[Errno 13] Permission denied: '/Library/Python/2.7/site-packages/test-easy-install-18954.pth'
您指定的安装目录(通过 --install-dir、--prefix 或 distutils 默认设置)是:
/Library/Python/2.7/site-packages/
Run Code Online (Sandbox Code Playgroud)
也许您的帐户没有对该目录的写访问权限?如果安装目录是系统拥有的目录,您可能需要以管理员或“root”帐户登录。如果您没有对这台机器的管理访问权限,您可能希望选择不同的安装目录,最好是在您的 PYTHONPATH 环境变量中列出的目录。
有关其他选项的信息,您可能希望查阅以下文档:
https://pythonhosted.org/setuptools/easy_install.html
请对您的系统进行适当的更改,然后重试
我想创建一个具有以下输出的json输出:
[ {'data': [<val1>,<valn>], 'name': '<nameA>'},
{'data': [<val1>,<valn>], 'name': '<nameB>'} ]
Run Code Online (Sandbox Code Playgroud)
基本上,它采用由子列表形成的列表,并且对于每个子列表的第一个元素,值将附加到"名称",并且保留将在属性"数据"中形成单个列表.
下面的代码创建了所需的输出,但只有在项目列表中的每个子列表包含2个元素时才有效.
items= [['A', 30.0], ['B', 10.0], ['C', 9.28]]
print "ITEMS before==",items
items = [{"name":k, "data":[g]} for k,g in items]
print "ITEMS after==",items
Run Code Online (Sandbox Code Playgroud)
正确的ouptut: [{'data':[30.0],'name':'A'},{'data':[10.0],'name':'B'},{'data':[9.28],'名称':'C'}]
问题是当子列表有超过2个元素时,例如:
items= [['A', 1 ,30.0], ['B', 2, 10.0], ['C', 3, 9.28]]
Run Code Online (Sandbox Code Playgroud)
应该产生:
[{'data': [1,30.0], 'name': 'A'}, {'data': [2,10.0], 'name': 'B'}, {'data': [3,9.28], 'name': 'C'}]
Run Code Online (Sandbox Code Playgroud)
我尝试过类似的东西:
items = [{"name":k, "data":[ x[1:] for x in g] } for k,g in items]
Run Code Online (Sandbox Code Playgroud)
但它会产生错误:ValueError:要解压缩的值太多
我怎样才能获得所需的输出?
假设我有一个包含许多列的 Dataframe,有些是string类型,有些是int类型,有些是map类型。
例如
字段/列types: stringType|intType|mapType<string,int>|...
|--------------------------------------------------------------------------
| myString1 |myInt1| myMap1 |...
|--------------------------------------------------------------------------
|"this_is_#string"| 123 |{"str11_in#map":1,"str21_in#map":2, "str31_in#map": 31}|...
|"this_is_#string"| 456 |{"str12_in#map":1,"str22_in#map":2, "str32_in#map": 32}|...
|"this_is_#string"| 789 |{"str13_in#map":1,"str23_in#map":2, "str33_in#map": 33}|...
|--------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想从 String 和 Map 类型的所有列中删除一些像 '_' 和 '#' 这样的字符,因此结果Dataframe/RDD 将是:
|------------------------------------------------------------------------
|myString1 |myInt1| myMap1|... |
|------------------------------------------------------------------------
|"thisisstring"| 123 |{"str11inmap":1,"str21inmap":2, "str31inmap": 31}|...
|"thisisstring"| 456 |{"str12inmap":1,"str22inmap":2, "str32inmap": 32}|...
|"thisisstring"| 789 |{"str13inmap":1,"str23inmap":2, "str33inmap": 33}|...
|-------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我不确定将 Dataframe 转换为 RDD 并使用它或在 Dataframe 中执行工作是否更好。
另外,不确定如何以最佳方式处理具有不同列类型的正则表达式(我正在唱scala)。我想对这两种类型(字符串和映射)的所有列执行此操作,尽量避免使用如下列名:
def …Run Code Online (Sandbox Code Playgroud) 我试图使用一个udf相当于:
df.select(when(col("abc").isNotNull and col("abc") =!= "" and col("age") <= 18, 1).otherwise(0).alias("something"))
我声明了udf这样的意思:
//return Int 0 or 1 if conditions are true
val myudf_x = udf((col_name: String, col_value: String, num: Int) => {
when(col_name.isNotNull and col_name =!= "" and col_value < num, 1).otherwise(0)
})
Run Code Online (Sandbox Code Playgroud)
用法:
df.select(
"col_abc",
myudf(col("col_abc"), col("age"), 18).alias("something")
)
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
不支持类型为org.apache.spark.sql.Column的模式
我也尝试过String类型而不是column类型的udf
有什么问题?
谢谢
给定下面的矩阵,我想创建和json输出,它将迭代矩阵行并附加项(col 1),如果组(col2)重复:
matrix = [
['JAN', '1', 'abc'],
['FEB', '7', 'xyz'],
['FEB', '4', 'abc'],
['MAR', '3', 'xyz'],
['DEC','12', 'xyz']
]
Run Code Online (Sandbox Code Playgroud)
如何创建输出/ JSON文件:
{
"month": ["JAN","FEB","FEB","MAR","DEC"],
"items": [
{ "group":"abc",
"data":[1,4]
},
{ "group":"xyz",
"data":[7,3,12]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了转置矩阵/列并构建一个字典,我在for循环中追加项目,但我遗漏了一些东西而且它变得混乱了.这应该是一个简单的方法.
python ×7
dictionary ×3
apache-spark ×2
hive ×2
scala ×2
airflow ×1
arrays ×1
atom-editor ×1
autocomplete ×1
bash ×1
dataframe ×1
excel ×1
hadoop ×1
hdfs ×1
ide ×1
json ×1
list ×1
numpy ×1
partitioning ×1
pyspark ×1
python-2.7 ×1
rdd ×1
regex ×1
sql ×1
transpose ×1