Page MenuHomePhabricator

Generalize ScholarlyArticleSplitter
Closed, ResolvedPublic5 Estimated Story Points

Description

The spark job ScholarlyArticleSplitter should be generalized to support the general case with n subgraphs, a wider variety of rules and stubs.

AC:

Event Timeline

Change #1019052 had a related patch set uploaded (by DCausse; author: DCausse):

[wikidata/query/rdf@master] Generalize ScholarlyArticleSplitter

https://gerrit.wikimedia.org/r/1019052

Gehel triaged this task as High priority.Apr 15 2024, 1:22 PM
Gehel set the point value for this task to 5.Apr 15 2024, 3:45 PM

I kicked off a run using the current version of the patch with the following command and backing table, and its status should be able to be followed here: https://yarn.wikimedia.org/cluster/app/application_1713178047802_16409

So long as I haven't made an error somewhere in here that produces a runtime exception (e.g., pathing), we should be able to see after a couple hours how it's going.

spark3-submit --master yarn --driver-cores 2 --conf spark.sql.autoBroadcastJoinThreshold=-1 --conf spark.dynamicAllocation.maxExecutors=128 --conf spark.sql.shuffle.partitions=512 --conf spark.executor.memoryOverhead=4g --executor-cores 4 --executor-memory 12g --driver-memory 16g  --name scholarly_article_split_manual__scholarly_article_split_triples__T362060_personal_namespace  --conf spark.yarn.maxAppAttempts=1 --class org.wikidata.query.rdf.spark.transform.structureddata.dumps.ScholarlyArticleSplit --deploy-mode cluster /home/dr0ptp4kt/rdf-spark-tools-0.3.138-SNAPSHOT-jar-with-dependencies-T362060.jar --input-table-partition-spec discovery.wikibase_rdf_t337013/date=20231016/wiki=wikidata --output-table-partition-spec dr0ptp4kt.wikibase_rdf_scholarly_split_T362060/snapshot=20231016/wiki=wikidata

Here was the manual table creation I did while useing the dr0ptp4kt namespace.

CREATE TABLE IF NOT EXISTS dr0ptp4kt.wikibase_rdf_scholarly_split_T362060 (
  `subject` string,
  `predicate` string,
  `object` string,
  `context` string
)
PARTITIONED BY (
    `snapshot` string,
    `wiki` string,
    `scope` string
)
STORED AS PARQUET
LOCATION 'hdfs://analytics-hadoop/user/dr0ptp4kt/wikibase_rdf_scholarly_split_T362060/wikidata/rdf_scholarly_split_T362060/'
;

Running time
Total Uptime: 55 min

This was faster than in T347989#9335980. Nice!

Counts

To be discussed in code review.

Samples

These look similar to about what we'd expect based on T347989#9346038 .

select "| " || concat_ws(" | ", subject, predicate, object, context) from dr0ptp4kt.wikibase_rdf_scholarly_split_t362060 where snapshot = '20231016' and wiki = 'wikidata' and
scope = 'scholarly_articles' and rand() <= (30/7643858365) distribute by rand() sort by rand() limit 30;

subjectpredicateobjectcontext
http://www.wikidata.org/entity/statement/Q46815762-E3F8B9BE-32CC-4055-9097-0732A1D7E88Ehttp://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://wikiba.se/ontology#BestRankhttp://www.wikidata.org/entity/Q46815762
http://www.wikidata.org/reference/c2c805e274b6709d71ffd08402ed14a95ddc0f48http://www.wikidata.org/prop/reference/P248http://www.wikidata.org/entity/Q180686http://wikiba.se/ontology#Reference
http://www.wikidata.org/entity/Q93646519http://schema.org/description"1985\u5E74\u306E\u8AD6\u6587"@jahttp://www.wikidata.org/entity/Q93646519
http://www.wikidata.org/entity/Q82929879http://wikiba.se/ontology#sitelinks"0"^^http://www.w3.org/2001/XMLSchema#integerhttp://www.wikidata.org/entity/Q82929879
http://www.wikidata.org/reference/698fdc9c32c9033280837148dd0cc2fbb09701b6http://www.wikidata.org/prop/reference/P248http://www.wikidata.org/entity/Q229883http://wikiba.se/ontology#Reference
http://www.wikidata.org/entity/statement/Q37398018-08548343-257C-43E8-8768-1B82B012B857http://www.w3.org/ns/prov#wasDerivedFromhttp://www.wikidata.org/reference/1312ec06258ac7841e5e97d5b1d85cc034da666bhttp://www.wikidata.org/entity/Q37398018
http://www.wikidata.org/entity/statement/Q38261165-38825DC4-B1CA-4102-8CCE-2B4713882EEDhttp://wikiba.se/ontology#rankhttp://wikiba.se/ontology#NormalRankhttp://www.wikidata.org/entity/Q38261165
http://www.wikidata.org/entity/statement/Q50247650-2B75A590-C865-4CD7-8E93-C5720E77B459http://www.wikidata.org/prop/statement/P31http://www.wikidata.org/entity/Q13442814http://www.wikidata.org/entity/Q50247650
http://www.wikidata.org/entity/statement/Q56638632-3EEB814A-C402-48D4-9577-B91996287EDDhttp://wikiba.se/ontology#rankhttp://wikiba.se/ontology#NormalRankhttp://www.wikidata.org/entity/Q56638632
http://www.wikidata.org/entity/statement/Q93198245-A9EF6F3A-AE60-4B68-9ADF-03861F92E7D2http://www.w3.org/ns/prov#wasDerivedFromhttp://www.wikidata.org/reference/c40456cccbdf1b0dbf4590fad9ace45a270e3af6http://www.wikidata.org/entity/Q93198245
http://www.wikidata.org/entity/statement/Q35798201-73FA43B1-DE81-4AB8-84A1-435A776AFBF8http://www.wikidata.org/prop/statement/P50http://www.wikidata.org/entity/Q55071316http://www.wikidata.org/entity/Q35798201
http://www.wikidata.org/entity/statement/Q46675214-E205C68E-FD35-4F3B-99F6-CEF31C772C1Ehttp://www.wikidata.org/prop/qualifier/P1545"2"http://www.wikidata.org/entity/Q46675214
http://www.wikidata.org/entity/statement/Q40608211-C59EE5EA-2F96-47C2-AE41-7EBEB83583F5http://wikiba.se/ontology#rankhttp://wikiba.se/ontology#NormalRankhttp://www.wikidata.org/entity/Q40608211
http://www.wikidata.org/entity/statement/Q40678982-26FB401C-5C07-4484-8F11-3A63E6438D02http://www.w3.org/ns/prov#wasDerivedFromhttp://www.wikidata.org/reference/f462e23459d8a8de6785357690284195e268f127http://www.wikidata.org/entity/Q40678982
http://www.wikidata.org/entity/Q93942709http://wikiba.se/ontology#sitelinks"0"^^http://www.w3.org/2001/XMLSchema#integerhttp://www.wikidata.org/entity/Q93942709
http://www.wikidata.org/entity/Q66690256http://www.wikidata.org/prop/direct/P1433http://www.wikidata.org/entity/Q2200957http://www.wikidata.org/entity/Q66690256
http://www.wikidata.org/entity/statement/Q42656263-19B6B2FB-7EF4-4301-B64B-8B0F3E2F9179http://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://wikiba.se/ontology#BestRankhttp://www.wikidata.org/entity/Q42656263
http://www.wikidata.org/entity/statement/Q41819491-08D87DB8-5349-4F49-9AFC-C55857D7F05Ahttp://www.w3.org/ns/prov#wasDerivedFromhttp://www.wikidata.org/reference/1b5ab5282d14f6d0382dec87ef64ab22696107fchttp://www.wikidata.org/entity/Q41819491
http://www.wikidata.org/entity/Q51113270http://www.wikidata.org/prop/direct/P1476"Adolescent homicide: towards assessment of risk"@enhttp://www.wikidata.org/entity/Q51113270
http://www.wikidata.org/entity/statement/Q38615085-39E7257A-444A-4123-82D4-F4038BABC6B7http://www.wikidata.org/prop/statement/P2860http://www.wikidata.org/entity/Q34125932http://www.wikidata.org/entity/Q38615085
http://www.wikidata.org/entity/statement/Q38929227-414FCA92-B5E3-47C2-8C49-3EFB97C0B921http://www.wikidata.org/prop/statement/P2860http://www.wikidata.org/entity/Q42598057http://www.wikidata.org/entity/Q38929227
http://www.wikidata.org/entity/statement/Q37847515-E9B0090D-C026-4DAF-8473-BE33C2ABEF24http://www.wikidata.org/prop/statement/value-normalized/P356http://dx.doi.org/10.1016/J.LUNGCAN.2011.01.019http://www.wikidata.org/entity/Q37847515
select "| " || concat_ws(" | ", subject, predicate, object, context) from dr0ptp4kt.wikibase_rdf_scholarly_split_t362060 where snapshot = '20231016' and wiki = 'wikidata' and
scope = 'wikidata_main' and rand() <= (30/7677112695) distribute by rand() sort by rand() limit 30;

Note the denominator here for the random function is slightly off because of copy-paste (it should have been 7677110614 instead of 7677112695), but the output gives a rough idea, anyway.

subjectpredicateobjectcontext
http://www.wikidata.org/entity/statement/Q50387726-D274B664-0724-4505-8EAD-1EAF80D6E3C0http://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://wikiba.se/ontology#BestRankhttp://www.wikidata.org/entity/Q50387726
http://www.wikidata.org/entity/Q37572035http://www.w3.org/2004/02/skos/core#altLabel"Notermann"@be-taraskhttp://www.wikidata.org/entity/Q37572035
http://www.wikidata.org/entity/Q767103http://www.w3.org/2004/02/skos/core#altLabel"Arrowroot"@svhttp://www.wikidata.org/entity/Q767103
http://www.wikidata.org/entity/statement/Q107819829-609FD401-699A-4F50-889A-396FB80A4C5Fhttp://wikiba.se/ontology#rankhttp://wikiba.se/ontology#NormalRankhttp://www.wikidata.org/entity/Q107819829
http://www.wikidata.org/entity/Q16258749http://www.wikidata.org/prop/P31http://www.wikidata.org/entity/statement/Q16258749-2B7736E5-4FB1-4E1B-B331-3DED7A08F0D4http://www.wikidata.org/entity/Q16258749
http://www.wikidata.org/entity/statement/Q882508-5F550A1A-D1BF-4464-A423-8BAEEE3434F3http://wikiba.se/ontology#rankhttp://wikiba.se/ontology#NormalRankhttp://www.wikidata.org/entity/Q882508
https://ko.wikipedia.org/wiki/%EA%B7%B9%EC%82%AC%EC%8B%A4%EC%A3%BC%EC%9D%98http://schema.org/isPartOfhttps://ko.wikipedia.org/http://www.wikidata.org/entity/Q749832
http://www.wikidata.org/entity/Q74889525http://www.wikidata.org/prop/direct/P3083"OGLE BLG-ECL-420825"http://www.wikidata.org/entity/Q74889525
http://www.wikidata.org/entity/statement/Q738238-224FEFD9-52CC-4B9D-BD1E-CA29C4990BC0http://www.wikidata.org/prop/statement/P31http://www.wikidata.org/entity/Q5http://www.wikidata.org/entity/Q738238
http://www.wikidata.org/entity/statement/Q201570-295dcfcd-40c0-e70b-d14d-93e2cbcd83d7http://wikiba.se/ontology#rankhttp://wikiba.se/ontology#NormalRankhttp://www.wikidata.org/entity/Q201570
http://www.wikidata.org/entity/statement/Q88920303-11FCB257-7822-493A-9E7C-A396A5D718E5http://www.wikidata.org/prop/statement/P3083"IRAS 19530+1936"http://www.wikidata.org/entity/Q88920303
http://www.wikidata.org/entity/statement/Q105814250-47A1EE15-4C90-4824-B492-767EE1DD0B68http://www.wikidata.org/prop/statement/P31http://www.wikidata.org/entity/Q64063317http://www.wikidata.org/entity/Q105814250
http://www.wikidata.org/entity/Q86207687http://schema.org/description"kategorya ng Wikimedia"@tlhttp://www.wikidata.org/entity/Q86207687
http://www.wikidata.org/entity/statement/Q35555-C6613D53-2FCF-4611-B799-1ECDF5EC436Bhttp://www.wikidata.org/prop/statement/P7471"7334"http://www.wikidata.org/entity/Q35555
http://www.wikidata.org/entity/statement/Q11341432-60EAA586-33D7-4EB2-9738-D317B4FC6BB1http://www.wikidata.org/prop/statement/P10783"2000103680"http://www.wikidata.org/entity/Q11341432
http://www.wikidata.org/entity/Q25867963http://schema.org/description"\u7EF4\u57FA\u5A92\u4F53\u6A21\u677F"@zhhttp://www.wikidata.org/entity/Q25867963
http://www.wikidata.org/value/2768aa0ab232dc34dbf1804f2674c9b4http://www.w3.org/1999/02/22-rdf-syntax-ns#typehttp://wikiba.se/ontology#GlobecoordinateValuehttp://wikiba.se/ontology#Value
http://www.wikidata.org/entity/L933663http://wikiba.se/ontology#statements"2"^^http://www.w3.org/2001/XMLSchema#integerhttp://www.wikidata.org/entity/L933663
http://www.wikidata.org/entity/Q10390279http://schema.org/description"regione amministrativa nello Distretto Federale del Brasile"@ithttp://www.wikidata.org/entity/Q10390279
http://www.wikidata.org/entity/Q18992850http://schema.org/description"\u0989\u0987\u0995\u09BF\u09AE\u09BF\u09A1\u09BF\u09AF\u09BC\u09BE \u099F\u09C7\u09AE\u09AA\u09CD\u09B2\u09C7\u099F"@bnhttp://www.wikidata.org/entity/Q18992850
http://www.wikidata.org/entity/statement/Q83030772-AFD73ED8-886E-4F79-BB5F-16CC8FD50207http://www.wikidata.org/prop/qualifier/P972http://www.wikidata.org/entity/Q51905050http://www.wikidata.org/entity/Q83030772
http://www.wikidata.org/entity/Q17772700http://www.wikidata.org/prop/P625http://www.wikidata.org/entity/statement/Q17772700-6107F56C-2A5A-4832-ADD8-AA87B22BE44Ehttp://www.wikidata.org/entity/Q17772700
http://www.wikidata.org/entity/statement/Q27120416-B973ABD8-C837-43DF-8425-5B1C7556532Bhttp://wikiba.se/ontology#rankhttp://wikiba.se/ontology#NormalRankhttp://www.wikidata.org/entity/Q27120416
http://www.wikidata.org/entity/Q9095717http://schema.org/description"\u0648\u06CC\u06A9\u06CC\u0645\u06CC\u0688\u06CC\u0627 \u0632\u0645\u0631\u06C1"@urhttp://www.wikidata.org/entity/Q9095717
http://www.wikidata.org/entity/Q99851796http://schema.org/description"categor\u00EDa de Wikimedia"@asthttp://www.wikidata.org/entity/Q99851796

Change #1020871 had a related patch set uploaded (by DCausse; author: DCausse):

[wikidata/query/rdf@master] Split based on subgraph rules

https://gerrit.wikimedia.org/r/1020871

Change #1024414 had a related patch set uploaded (by DCausse; author: DCausse):

[wikidata/query/rdf@master] ScholarlyArticleSplit: add support for stubs

https://gerrit.wikimedia.org/r/1024414

Change #1019052 merged by jenkins-bot:

[wikidata/query/rdf@master] Generalize ScholarlyArticleSplitter

https://gerrit.wikimedia.org/r/1019052

Change #1020871 merged by jenkins-bot:

[wikidata/query/rdf@master] Split based on subgraph rules

https://gerrit.wikimedia.org/r/1020871

Change #1024414 merged by jenkins-bot:

[wikidata/query/rdf@master] ScholarlyArticleSplit: add support for stubs

https://gerrit.wikimedia.org/r/1024414