我要1202 Extra column(s) found尝试加载简单的CSV时,Redshift出现错误。我确保文件中没有其他列,也没有任何未转义的字符,这些字符会导致COPY命令因此错误而失败。
这是创建的目标表:
create table test_table(
name varchar(500),
email varchar(500),
developer_id integer,
developer_name varchar(500),
country varchar(20),
devdatabase varchar(50));
Run Code Online (Sandbox Code Playgroud)
我正在使用一个简单的CSV文件,没有标题,只有3行数据:
john smith,john@gmail.com,123,johndev,US,comet
jane smith,jane@gmail.com,124,janedev,GB,titan
jack smith,jack@gmail.com,125,jackdev,US,comet
Run Code Online (Sandbox Code Playgroud)
不幸的是,我的COPY命令失败err_1202 "Extra column(s) found"。
COPY test_table
FROM 's3://mybucket/test/test_contacts.csv'
WITH credentials AS 'aws_access_key_id=<awskey>;aws_secret_access_key=<mykey>'
CSV;
Run Code Online (Sandbox Code Playgroud)
文件中没有其他列。
给定n个字典,编写一个函数,该函数将返回一个唯一字典,其中包含重复键的值列表.
例:
d1 = {'a': 1, 'b': 2}
d2 = {'c': 3, 'b': 4}
d3 = {'a': 5, 'd': 6}
Run Code Online (Sandbox Code Playgroud)
结果:
>>> newdict
{'c': 3, 'd': 6, 'a': [1, 5], 'b': [2, 4]}
Run Code Online (Sandbox Code Playgroud)
我的代码到目前为止:
>>> def merge_dicts(*dicts):
... x = []
... for item in dicts:
... x.append(item)
... return x
...
>>> merge_dicts(d1, d2, d3)
[{'a': 1, 'b': 2}, {'c': 3, 'b': 4}, {'a': 5, 'd': 6}]
Run Code Online (Sandbox Code Playgroud)
生成一个新字典的最佳方法是什么,该字典会产生这些重复键的值列表?
我需要能够从RDD返回(键,值)对的值列表,同时保持原始顺序.
我在下面列出了我的解决方法,但我希望能够一次性完成所有工作.
就像是:
myRDD = [(1, 2582), (3, 3222), (4, 4190), (5, 2502), (6, 2537)]
values = myRDD.<insert PySpark method(s)>
print values
>>>[2582, 3222, 4190, 2502, 2537]
Run Code Online (Sandbox Code Playgroud)
我的解决方法:
myRDD = [(1, 2582), (3, 3222), (4, 4190), (5, 2502), (6, 2537)]
values = []
for item in myRDD.sortByKey(True).collect():
newlist.append(item[1])
print values
>>>[2582, 3222, 4190, 2502, 2537]
Run Code Online (Sandbox Code Playgroud)
谢谢!
python ×2
amazon-s3 ×1
apache-spark ×1
csv ×1
duplicates ×1
merge ×1
pyspark ×1
rdd ×1
sorting ×1